Цель плагина сборки Maven 'jar-with-dependencies' не включает файл jar из дочернего pom - PullRequest
0 голосов
/ 01 июля 2018

Я попытался найти правильное решение для моего вопроса, но похоже, что он похож на следующий * maven сборка, включающая текущую версию проекта в окончательный zip / tar .

Идея проекта состоит в том, чтобы иметь один родительский pom и несколько дочерних pom. Я хотел бы иметь jar-with-dependencies для каждого дочернего элемента, когда я выполню команду mvn assembly: single с корневого уровня.

Итак, что я получил до сих пор:

  1. Если я выполню mvn package и mvn assembly:single один за другим, то первый будет успешно завершен, а второй с предупреждением о том, что дочерний проект не был включен. Поскольку мой модуль не был включен, я не могу запустить цель.
  2. Если я выполню mvn package assembly:single, то будет создан требуемый jar со всеми зависимостями, и я смогу запустить цель.

Боюсь, что пропустил конфигурацию в одном из pom.xml. Я буду признателен, если кто-то может мне помочь с этим. Я добавляю ссылку в репозиторий GitHub с этим примером.

кстати, я использую maven-assembly-plugin версию 3.1.0

Заранее спасибо, и, думаю, мне нужно будет купить действительно хорошую книгу о Мейвене.

Ответы [ 2 ]

0 голосов
/ 08 июля 2018

Спасибо за ответы. Оказывается, если у ребенка была неправильная конфигурация pom.xml. Я не добавил определение плагина в разделе плагинов: <build> <plugins> HERE <plugins> </build> Так что это было правильно описано под <pluginManagement>, и это ослепляет меня ...

0 голосов
/ 01 июля 2018

Ключевым моментом является отключение выполнения сборки для родительского проекта: это может быть достигнуто путем объединения опции <skipAssembly>, секции profiles и секции properties.

Со следующими pom-файлами он работает нормально.

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

<?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.slemarchand.samples.jarwithdependencies</groupId>
     <artifactId>parent</artifactId>
     <version>1.0-SNAPSHOT</version>
     <packaging>pom</packaging>
     <name>parent</name>
     <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.7</maven.compiler.source>
        <maven.compiler.target>1.7</maven.compiler.target>
        <skip.assembly>true</skip.assembly>
     </properties>
     <modules>
        <module>child1</module>
        <module>child2</module>
     </modules>
     <dependencyManagement>
        <dependencies>
           <dependency>
              <groupId>junit</groupId>
              <artifactId>junit</artifactId>
              <version>4.11</version>
              <scope>test</scope>
           </dependency>
        </dependencies>
     </dependencyManagement>
     <build>
        <pluginManagement>
           <plugins>
              <plugin>
                 <artifactId>maven-assembly-plugin</artifactId>
                 <configuration>
                    <skipAssembly>${skip.assembly}</skipAssembly>
                    <descriptorRefs>
                       <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                 </configuration>
              </plugin>
           </plugins>
        </pluginManagement>
     </build>
     <profiles>
        <profile>
           <id>jar</id>
           <activation>
              <file>
                 <exists>${basedir}/src/main/java</exists>
              </file>
           </activation>
           <properties>
              <skip.assembly>false</skip.assembly>
           </properties>
        </profile>
     </profiles>
</project>

Ребенок 1 pom.xml:

<?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>

  <parent>
    <groupId>com.slemarchand.samples.jarwithdependencies</groupId>
    <artifactId>parent</artifactId>
    <version>1.0-SNAPSHOT</version>
  </parent>

  <artifactId>child1</artifactId>
  <version>1.0-SNAPSHOT</version>

  <name>child1</name>

  <dependencies>

    <dependency>
        <groupId>com.google.guava</groupId>
        <artifactId>guava</artifactId>
        <version>25.1-jre</version>
    </dependency>

    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
    </dependency>

  </dependencies>
</project>

Ребенок 2 pom.xml:

<?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>

  <parent>
    <groupId>com.slemarchand.samples.jarwithdependencies</groupId>
    <artifactId>parent</artifactId>
    <version>1.0-SNAPSHOT</version>
  </parent>

  <artifactId>child2</artifactId>
  <version>1.0-SNAPSHOT</version>

  <name>child2</name>

  <dependencies>

    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-lang3</artifactId>
        <version>3.0</version>
    </dependency>

    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
    </dependency>
  </dependencies>

  <build>
  </build>
</project>

Пример проекта можно найти здесь: https://gitlab.com/slemarchand/jar-with-dependencies-multi-module-sample.

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