Maven: привязка нескольких артефактов
У меня есть проект maven, который использует некоторые пользовательские jars [не найденные в каком-либо репозитории]. Чтобы добавить их вместе с сборкой Maven, я использую цель attach-artifact в maven. Ниже приведен мой файл pom:
<?xml version="1.0" encoding="UTF-8"?>
<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>com.maximus</groupId>
<artifactId>adminbuild</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<name>adminbuild</name>
<build>
<sourceDirectory>src/main/java</sourceDirectory>
<testSourceDirectory>src/test/java</testSourceDirectory>
<outputDirectory>target</outputDirectory>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.7</version>
<executions>
<execution>
<id>attach-artifacts</id>
<phase>package</phase>
<goals>
<goal>attach-artifact</goal>
</goals>
<configuration>
<artifacts>
<artifact>
<file>${basedir}/../../resources/dependencies/java/customjar1.jar</file>
<type>jar</type>
</artifact>
<artifact>
<file>${basedir}/../../resources/dependencies/java/customjar2.jar</file>
<type>jar</type>
</artifact>
</artifacts>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
Мои проекты, которые используют эти jars [customjar1.jar, customjar2.jar], имеют зависимость от вышеуказанного файла pom [adminbuild].
Когда я выполняю команду mvn clean install
, я получаю следующую ошибку:
[ERROR] Failed to execute goal org.codehaus.mojo:build-helper-maven-plugin:1.7:attach-artifact (attach-artifacts) on project adminbuild: The artifact with same type and classifier: jar:null is used more than once. -> [Help 1]
Ниже приведен вывод команды mvn -version
:
Apache Maven 3.0.3 (r1075438; 2011-02-28 23:01:09+0530)
Maven home: C:\maven
Java version: 1.6.0_26, vendor: Sun Microsystems Inc.
Java home: C:\Java\jdk1.6.0_26\jre
Default locale: en_IN, platform encoding: Cp1252
OS name: "windows 7", version: "6.1", arch: "amd64", family: "windows"
Кажется, что то, как я прикрепляю артефакты, неверно. Должен ли я не прикреплять несколько артефактов в одном файле pom? Если да, то как. Пожалуйста, помогите.
Ответы
Ответ 1
Прикрепленные артефакты обычно используются для установки дополнительных файлов, созданных вашей сборкой, таких как классы jap файла webapp, документации или источников.
Чтобы добавить файлы в ваш репозиторий maven, чтобы они были доступны в качестве зависимостей, вы должны использовать цель install-file.
Изменить: Прикрепленные артефакты идентифицируются одним и тем же groupId и artifactId в качестве основного проекта, но с другим классификатором. В вашей конфигурации вы не указали классификатор, следовательно, сообщение об ошибке.
Ответ 2
Вы хотели бы иметь эти настраиваемые банки в диспетчере репозитория, например, как nexus, чтобы их можно было загрузить/использовать как обычный барабан зависимости.
Предполагая, что это невозможно, и увидев, что эти банки находятся в хорошо известном месте, возможно, вы могли бы указать эти пользовательские банки с областью system
в проектах, которые в них нуждаются?
<project>
...
<dependencies>
<dependency>
<groupId>my-group</groupId>
<artifactId>customjar1</artifactId>
<version>a.b.c</version>
<scope>system</scope>
<systemPath>${basedir}/../../resources/dependencies/java/customjar1.jar</systemPath>
</dependency>
</dependencies>
...
</project>
Ответ 3
Я использовал вторичный проект, чтобы сделать это вместе с мультимодулем.
fooobar.com/info/8850/...