Можно ли загрузить некоторые файлы из http во время жизненного цикла maven? любой плагин?
Maven: загрузка файлов с URL-адреса
Ответ 1
Если файл является зависимым от Maven, вы можете использовать Maven Dependency Plugin, который имеет get
.
Для любого файла вы можете использовать плагин Antrun для вызова Ant Получить задачу.
Другим вариантом будет maven-download-plugin, он был точно создан для облегчения такого рода вещей. Он не очень активно развивается, и в документации упоминается только цель artifact
, которая делает то же самое, что и dependency:get
, но... Если вы посмотрите на источники, вы увидите, что есть WGet mojo, который выполнит эту работу.
Используйте это как в любом POM:
<plugin>
<groupId>com.googlecode.maven-download-plugin</groupId>
<artifactId>download-maven-plugin</artifactId>
<version>1.3.0</version>
<executions>
<execution>
<!-- the wget goal actually binds itself to this phase by default -->
<phase>process-resources</phase>
<goals>
<goal>wget</goal>
</goals>
<configuration>
<url>http://url/to/some/file</url>
<outputFileName>foo.bar</outputFileName>
<!-- default target location, just to demonstrate the parameter -->
<outputDirectory>${project.build.directory}</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
Ключевыми преимуществами этого плагина являются кэширование загрузки и проверка на подпись, например MD5.
Обратите внимание, что этот ответ был сильно обновлен, чтобы отражать изменения в плагине, как указано в комментариях.
Ответ 2
Кажется, что wagon-maven-plugin из CodeHaus позволяет загружать файлы через HTTP (хотя это не является исходной целью).
Вот пример загрузки GlassFish zip перед тестами интеграции:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>wagon-maven-plugin</artifactId>
<version>1.0</version>
<executions>
<execution>
<id>download-glassfish</id>
<phase>pre-integration-test</phase>
<goals>
<goal>download-single</goal>
</goals>
<configuration>
<url>http://download.java.net</url>
<fromFile>glassfish/3.1/release/glassfish-3.1.zip</fromFile>
<toDir>${project.build.directory}/glassfish</toDir>
</configuration>
</execution>
</executions>
</plugin>
Ответ 3
Maven-antrun-plugin является более прямым решением:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<id>download-files</id>
<phase>prepare-package</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<target>
<!-- download file -->
<get src="http://url/to/some/file"
dest="${project.build.directory}/downloads/"
verbose="false"
usetimestamp="true"/>
</target>
</configuration>
</execution>
</executions>
</plugin>
Ответ 4
Я хотел бы добавить несколько вещей о загрузке-maven-plugin:
- Проект теперь размещен на GitHub https://github.com/maven-download-plugin/maven-download-plugin
- Его выпуски доступны на Maven Central, а SNAPSHOT доступны в репозитории снимков oss.sonatype.org
- По сравнению с другими предложениями, упомянутыми здесь, плагин download-maven добавляет следующую интересную функцию: кеширование файлов (чтобы избежать повторной загрузки больших файлов) и проверки подписи, чтобы убедиться, что загрузка получила правильные биты.
Ответ 5
Если доступно, wget можно использовать напрямую с exec-maven-plugin:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1</version>
<executions>
<execution>
<goals>
<goal>exec</goal>
</goals>
</execution>
</executions>
<configuration>
<executable>wget</executable>
<arguments>
<argument>http://example.com/file.zip</argument>
<argument>destination.zip</argument>
</arguments>
</configuration>
</plugin>
Ответ 6
Вы можете использовать цель download-single
в плагине wagon
. Вот пример загрузки HTML-страницы (обратите внимание, что URL-адрес должен быть разделен на URL-адрес "каталога" и "имя файла" )
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>wagon-maven-plugin</artifactId>
<version>1.0</version>
<executions>
<execution>
<phase>validate</phase>
<goals><goal>download-single</goal></goals>
<configuration>
<url>http://www.mojohaus.org/wagon-maven-plugin</url>
<fromFile>download-single-mojo.html</fromFile>
<toFile>[my dir]/mojo-help.html</toFile>
</configuration>
</execution>
</executions>
</plugin>