Установка созданных Maven артефактов без использования artifactId - PullRequest
0 голосов
/ 27 октября 2019

У меня есть родительский проект maven с 2 модулями. При создании родительского проекта я хочу сгенерировать и установить последний артефакт с именем, отличным от artifactId, использованного в pom.xml. Я вижу, что у сгенерированного артефакта есть имя, которое я хочу использовать в директории сборки. Однако, когда архив установлен в локальном репозитории Maven, maven-install-plugin копирует артефакты, используя artifactId проекта. Как я могу настроить плагин для установки артефактов без использования artifactId?

pom.xml моего дочернего проекта:

<project>
   <parent>
      <groupId>com.mycomp</groupId>
      <artifactId>com-mycomp</artifactId>   
      <version>12.0.0.0.0</version>
   </parent>

   <modelVersion>4.0.0</modelVersion>
   <groupId>com.mycomp</groupId>
   <artifactId>child1</artifactId>
   <version>12.0.0.0.0</version>

   <build>
      <defaultGoal>install</defaultGoal>
      <finalName>${parent.artifactId}-${project.version}</finalName>
      <plugins>
           <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <version>3.1.1</version>
                <executions>
                    <execution>
                        <id>copy-dependencies</id>
                        <phase>package</phase>
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                        <configuration>
                            <includeScope>runtime</includeScope>
                       <outputDirectory>${project.build.directory}/dependencies/</outputDirectory>
                            <overWriteReleases>false</overWriteReleases>
                            <overWriteSnapshots>false</overWriteSnapshots>
                            <overWriteIfNewer>true</overWriteIfNewer>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>2.4</version>
                <executions>
                    <execution>
                        <id>assembly:package</id>
                        <phase>package</phase>
                        <goals>
                                <goal>single</goal>
                        </goals>
                        <configuration>
                                <appendAssemblyId>false</appendAssemblyId>
                                <descriptors>
                  <descriptor>src/main/resources/dependencies.xml</descriptor>
                                </descriptors>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

                        <plugin>
                           <groupId>org.apache.maven.plugins</groupId>
                           <artifactId>maven-jar-plugin</artifactId>
                           <version>3.1.2</version>
                           <configuration>
                               <archive>
                                   <manifest>
                                       <classpathPrefix>libs/</classpathPrefix>
                                       <addClasspath>true</addClasspath>
                                       <mainClass>com.my.MainClass</mainClass>
                                   </manifest>
                               </archive>
                           </configuration>
                       </plugin>

      </plugins>
   </build>
</project>

Родитель pom.xml:

<project>
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.mycomp</groupId>
   <artifactId>com-mycomp</artifactId>   
   <version>12.0.0.0.0</version>
   <packaging>pom</packaging>

   <modules>
     <module>child1</module>
     <module>child2</module>
   </modules>
   :
   :
</project>

Желаемый вывод mvn clean install: 1) com-mycomp-12.0.0.0.0.jar в локальном репозитории maven 2) com-mycomp-12.0.0.0.0.zip, состоящий из вышеуказанного jar и его зависимостей.

Наблюдаемое поведение: 3) com-mycomp-12.0.0.0.0.jar создается в директории сборки. Но он устанавливается в репозиторий maven как child1-12.0.0.0.0.jar. 4) com-mycomp-12.0.0.0.0.zip создается в директории сборки. Но он установлен в репозитории maven как child1-12.0.0.0.0.zip

Как мне добиться желаемого поведения (# 1 и # 2)?

1 Ответ

0 голосов
/ 27 октября 2019

Артефакты в локальном хранилище всегда устанавливаются с их artifactId.

Вы не можете это изменить. И даже если бы вы могли, я настоятельно рекомендовал бы против этого, потому что вы нарушаете ожидания.

Если вы хотите создать дополнительный zip-файл, содержащий банку с зависимостями, вам не нужен второй модуль. Вы можете создать его через плагин сборки и прикрепить его с помощью классификатора, подобного dependencies. Затем у вас есть два артефакта, такие как

com-mycomp-12.0.0.0.0.jar
com-mycomp-12.0.0.0.0-dependencies.zip
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...