Плагин сборки Maven - установите созданную сборку
У меня есть проект, который просто состоит из файлов. Я хочу упаковать эти файлы в zip и хранить их в репозитории maven. У меня есть плагин сборки, настроенный для создания zip файла, и эта часть работает нормально, но я не могу понять, как установить zip файл?
Кроме того, если я хочу использовать эту сборку в другом артефакте, как мне это сделать? Я намерен называть зависимость: unpack, но у меня нет артефакта в хранилище для распаковки.
Как я могу получить zip файл в моем репозитории, чтобы я мог повторно использовать его в другом артефакте?
родительский pom
<build>
<plugins>
<plugin>
<!--<groupId>org.apache.maven.plugins</groupId>-->
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2-beta-5</version>
<configuration>
<filters>
<filter></filter>
</filters>
<descriptors>
<descriptor>../packaging.xml</descriptor>
</descriptors>
</configuration>
</plugin>
</plugins>
</build>
Ребенок POM
<parent>
<groupId>com. ... .virtualHost</groupId>
<artifactId>pom</artifactId>
<version>0.0.1</version>
<relativePath>../pom.xml</relativePath>
</parent>
<name>Virtual Host - ***</name>
<groupId>com. ... .virtualHost</groupId>
<artifactId>***</artifactId>
<version>0.0.1</version>
<packaging>pom</packaging>
Я отфильтровал название. Правильно ли это ПОМ? Я просто хочу объединить файлы для определенного виртуального хоста вместе.
Спасибо,
Вальтер
Ответы
Ответ 1
У меня есть плагин сборки, настроенный для создания zip файла, и эта часть работает нормально, но я не могу понять, как установить zip файл?
Ну, созданная сборка должна автоматически присоединяться к проекту и затем загружаться в репозиторий по целям install
и deploy
. Можете ли вы показать свою pom?
Обновление: С вашей текущей конфигурацией я не думаю, что сборка создается как часть вашей сборки. Вам нужно привязать цель single
к фазе жизненного цикла, обычно package
:
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2-beta-5</version>
<configuration>
<descriptors>
<descriptor>../packaging.xml</descriptor>
</descriptors>
</configuration>
<executions>
<execution>
<id>make-assembly</id> <!-- this is used for inheritance merges -->
<phase>package</phase> <!-- append to the packaging phase. -->
<goals>
<goal>single</goal> <!-- goals == mojos -->
</goals>
</execution>
</executions>
</plugin>
И теперь он должен быть установлен/развернут правильно.
Кроме того, если я хочу использовать эту сборку в другом артефакте, как мне это сделать? Я намерен называть зависимость: unpack, но у меня нет артефакта в хранилище для распаковки.
Вы можете объявить зависимость от сборки (используя подходящие classifier
и type
в вашем случае), но поскольку зависимость разрешена через репозиторий, сначала вам нужно сначала решить первый шаг. Затем объявите что-то вроде этого (где классификатор является идентификатором сборки):
<dependency>
<groupId>com. ... .virtualHost</groupId>
<artifactId>***</artifactId>
<version>0.0.1</version>
<classifier>...</classifier>
<type>zip</type>
</dependency>
Ответ 2
Я думаю, что сборки должны быть автоматически привязаны к сборке, но если это не сработает, цель Maven Build Helper "attach-artifact" прикрепляет указанный файл, который будет установлен в репозитории. Я использовал этот плагин для установки файлов, созданных внешним процессом, например Ant или NSIS.
Ответ 3
Я не знаю, что это может быть полезно для вас, но поскольку файл JAR в основном представляет собой ZIP файл и информацию META-INF, вы можете создать свой проект как банку без источников и добавить счетчики xip в src/main/resources
без какой-либо конфигурации плагина.
Если вы хотите, чтобы ваш контент находился в другом месте, вы всегда можете сделать что-то вроде:
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany.myzip</groupId>
<artifactId>myzip-artifact-id</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<build>
<resources>
<resource>
<targetPath>.</targetPath>
<filtering>false</filtering>
<directory>${basedir}/zipcontent</directory>
<includes>
<include>**/*</include>
</includes>
</resource>
</resources>
</build>
</project>
Если вы хотите, чтобы ваш артефакт был установлен и был доступен в репозитории, вам необходимо настроить его для фазы развертывания:
http://maven.apache.org/plugins/maven-deploy-plugin/usage.html