Этот POM должен сделать трюк. Пожалуйста, помните, что это не типичный прецедент для Maven.
Как вы указали, сборка не будет делать это из коробки, главным образом потому, что директива сборки не содержит <unpack>true</unpack>
. Поэтому вам нужна помощь. Для этого я собираюсь использовать плагин antrun
.
ПОМ:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>deploy-zip</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<name>deploy-zip</name>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.8</version>
<executions>
<execution>
<id>unpack-zip</id>
<phase>prepare-package</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<target>
<unzip src="YOUR_ZIP" dest="${project.build.directory}/temp" />
</target>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.5.3</version>
<executions>
<execution>
<id>bundle-zip</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
<configuration>
<descriptors>
<descriptor>${project.basedir}/src/main/assembly/my-zip.xml</descriptor>
</descriptors>
<appendAssemblyId>true</appendAssemblyId>
</configuration>
</plugin>
</plugins>
</build>
<distributionManagement>
<repository>
<id>nexus</id>
<name>Nexus</name>
<url>YOUR_NEXUS_URL</url>
</repository>
<snapshotRepository>
<id>nexus</id>
<name>Nexus</name>
<url>YOUR_NEXUS_URL</url>
</snapshotRepository>
</distributionManagement>
</project>
И дескриптор сборки (предположительно в src/main/assembly
):
<assembly
xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
<id>my-zip</id>
<formats>
<format>zip</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<fileSets>
<fileSet>
<directory>${project.build.directory}/temp</directory>
<outputDirectory>.</outputDirectory>
</fileSet>
</fileSets>
</assembly>
Если вы делаете mvn deploy
и учетные данные в порядке, то файл должен быть загружен в хранилище.
Если вы хотите, чтобы другие зависят от этого, используйте:
<dependency>
<groupId>org.example</groupId>
<artifactId>deploy-zip</artifactId>
<version>1.0-SNAPSHOT</version>
<classifier>my-zip</classifier>
<type>zip</type>
</dependency>
Я надеюсь, что это работает для вас.
Я не понимаю. Если у вас есть проект Maven, выход которого является ZIP (что может быть сделано только с сборками), разве вы уже не достигли своей цели? Или у вас есть POM и zip в подпапке, и вам нужна помощь в составлении POM, чтобы он мог быть установлен в вашем локальном репозитории? – Daniel
Что вы сказали последним, этот модуль состоит только из zip-файла, созданного в другом месте, и помещается в подпапку. Мне нужен мой pom, чтобы просто поместить этот zip-файл в репозиторий nexus. –
Хорошо, Nexus repo? Должно ли это делать 'deploy', а не' install'? – Daniel