У меня многомодовый pom, и я хочу собрать jar-with-dependencies для родителя. Но мне не нужно создавать сборку для каждого модуля, у них нет событий с дескрипторами сборки. Поэтому я использую параметр runOnlyAtExecutionRoot из Maven-сборка-плагина с ограниченным успехом:Использование runOnlyAtExecutionRoot внутри pom
- Если я ввожу параметр через командную строку, она работает: скачет монтаж модулей и сборки родительского проекта генерируются:
mvn compile assembly:single -DrunOnlyAtExecutionRoot=true
это я ввести параметр в родительский POM, он игнорируется:
mvn compile assembly:single
В pom.xml:<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.orgPOM/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/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>my.company</groupId> <artifactId>thisApp</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>pom</packaging> <name>thisApp Parent Project</name> <modules> <module>my.company.thisApp.main</module> <module>my.company.library-1</module> <module>my.company.library-1.library-1-1</module> <module>my.company.library-1.library-1-2</module> <module>my.company.library-2</module> <module>my.company.library-3</module> <module>my.company.library-3.library-3-1</module> </modules> <build> <pluginManagement> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> <version>3.0.0</version> <configuration> <runOnlyAtExecutionRoot>true</runOnlyAtExecutionRoot> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> </configuration> </plugin> </plugins> </pluginManagement> </build> <dependencies> <dependency> <groupId>my.company.thisApp</groupId> <artifactId>main</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency> </dependencies> </project>
Второй способ не работает, он пытается собрать каждый из модулей, и он терпит неудачу, потому что «для них не найдены дескрипторы сборки».
Каков правильный способ указать параметр runOnlyAtExecutionRoot в POM? Я также попытался превратить его в «исполнение» без успеха.
Вы правы, когда ваши говорят, что проект с упаковкой П не имеет файла, чтобы добавить к сборке, но тот факт, исчезает, как только вы заявляете зависимость от любого из его модулей: тогда он должен добавить, по крайней мере, файлы этого модуля, поэтому ошибка «Вы должны установить хотя бы один файл» исчезает. Я изменил вопрос, чтобы показать полный pom. –
Ссылка на дескриптор «jar-with-dependencies» работает для вас, когда вы добавляете зависимость? – gclaussn
Да, ссылка дескриптора «jar-with-dependencies» работает для родительского помпа, когда ему есть что добавить (зависимость в этом случае). Проблема заключается в параметре runOnlyAtExecutionRoot, который выполняется только при вводе через командную строку. –