В Maven, как мне скопировать файлы с помощью плагина wagon? - PullRequest
4 голосов
/ 09 июня 2011

Резюме: Как скопировать некоторые сгенерированные файлы в каталог веб-сервера (например, IIS или Apache) с помощью Maven?

Подробности: у меня есть работающее приложение, которое создается в Maven.Мне удалось собрать его с помощью webstart-maven-plugin , который производит все необходимые файлы (.jar и .jnlp) в каталоге target/jnlp.Он также создает zip-файл, в котором все они находятся по адресу target/foo-1.0.zip.

. На данный момент плагин webstart не имеет цели deploy - запрос на него завершен в FAQ (вопрос 3) .Это может быть реализовано в будущем, но на данный момент предлагается использовать wagon-maven-plugin .

Я никогда не использовал Wagon.Для начала я хотел бы просто скопировать файлы в локальный каталог, обслуживаемый веб-сервером.Позже я хотел бы скопировать их удаленно, возможно, используя ftp.Может кто-нибудь привести пример того, что мне нужно добавить в pom.xml, чтобы работала локальная копия (и, надеюсь, тоже пример ftp?).Я не могу найти это в документации.После прочтения я думаю, что мне также может понадобиться Wagon Maven File Provider , но, поскольку в нем почти нет документации, я не уверен.

Ответы [ 2 ]

6 голосов
/ 09 июня 2011

Поставщики Wagon предназначены только для поддержки дополнительных сетевых протоколов (например, FTP).

Если вы хотите скопировать файл на веб-сервер (локальный или удаленный), вы можете использовать плагин загрузки Maven:

...
<plugin>
    <groupId>com.atlassian.maven.plugins</groupId>
    <artifactId>maven-upload-plugin</artifactId>
</plugin>
...

В родительском пом:

            <plugin>
                <groupId>com.atlassian.maven.plugins</groupId>
                <artifactId>maven-upload-plugin</artifactId>
                <version>1.1</version>
                <configuration>
                    <resourceSrc>
                        ${project.build.directory}/${project.build.finalName}.${project.packaging}
                    </resourceSrc>
                    <resourceDest>${jboss.deployDir}</resourceDest>
                    <serverId>${jboss.host}</serverId>
                    <url>${jboss.deployUrl}</url>
                </configuration>
            </plugin>

И для умной настройки параметров я использую профили maven (в родительском pom):

<profiles>
    <!-- local deployment -->
    <profile>
        <id>developpement</id>
        <properties>
            <jboss.host>localhost</jboss.host>
            <jboss.deployDir>appli/jboss-4.0.4.GA/server/default/deploy/</jboss.deployDir>
            <jboss.deployUrl>file://C:/</jboss.deployUrl>
        </properties>
    </profile>
    <!-- distant deployment -->
    <profile>
        <id>validation</id>
        <properties>
            <jboss.host>ENV_val</jboss.host>
            <jboss.deployDir>/home/envval/jboss/server/default/deploy/</jboss.deployDir>
            <jboss.deployUrl>scp://PROJECT_LAN_HOST</jboss.deployUrl>
        </properties>
    </profile>
</profiles>

Я создал «средство запуска муравьев», чтобы использовать его, щелкнув в разделе «Вид муравья Eclipse»:

<target name="copy war to JBoss local" description="Copy war to local JBoss">
    <maven goal="upload:upload" options="-Pdeveloppement" />
</target>

Но вы можете просто запустить его из командной строки:

mvn upload:upload -Pdeveloppement

РЕДАКТИРОВАТЬ : Кстати, для удаленного развертывания вам может потребоваться пароль для входа в систему scp для работы. Вы должны добавить их в свой файл Maven settings.xml:

<settings>
  ...
  <servers>
    <server>
      <id>ENV_val</id>
      <username>login</username>
      <password>password</password>
    </server>
  </servers>
  ...
</settings>

РЕДАКТИРОВАТЬ : Вам нужно будет добавить репозиторий Atlassian:

    <pluginRepositories>
    <pluginRepository>
        <id>Atlassian</id>
        <url>https://maven.atlassian.com/repository/public</url>
        <releases>
            <enabled>true</enabled>
        </releases>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
    </pluginRepository>
</pluginRepositories>   

РЕДАКТИРОВАТЬ : в зависимости от удаленного протокола вам нужно будет добавить расширения фургона, см. Загрузка каталога с использованием sftp с Maven

3 голосов
/ 09 июня 2011

В итоге я не использовал плагин загрузки Maven - он казался немного ограниченным и не являлся частью основного дистрибутива maven. Я использовал плагин Maven Wagon, как было предложено. Вот простейший из всех, что я мог сделать, чтобы это работало. Надеюсь, что другие найдут это полезным, так как я не мог найти ничего подобного легко.

  <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>wagon-maven-plugin</artifactId>
    <version>1.0-beta-3</version>
    <configuration>
      <fromDir>${project.build.directory}/jnlp</fromDir>
      <includes>*</includes>
      <url>file://c:/inetpub/wwwroot</url>
      <toDir>jnlp</toDir>
    </configuration>
  </plugin>

Для удаленных рассылок вы просто меняете тип URL и, при необходимости, добавляете расширения фургона.

...