以下是我maven-assembly-plugin
的配置,并且工作正常。但是当我在pluginManagement
父标记中添加我的所有插件时,它无法正常工作。
我不确定为什么它不起作用
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2</version>
<executions>
<execution>
<id>MyId</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<descriptor>assemblyFile.xml</descriptor>
<appendAssemblyId>false</appendAssemblyId>
</configuration>
</execution>
</executions>
</plugin>
答案 0 :(得分:0)
您的maven-assembly-plugin的执行部分不应包含在 pluginManagement 部分中。如果是,它将被忽略。构建不会引发错误-不会创建可执行jar。然后,如果尝试运行它,将得到“没有主清单属性...”。
在“父级” pom中定义的{em> pluginManagement 部分generally在各个模块之间共享插件配置。它可以指定版本和配置,并确保版本与子pom匹配,但是不打算包含执行细节。
这是一个有效的示例,其中 pluginManagement 仅指定插件的版本(请记住, pluginManagement 通常位于单独的父项pom中):
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.4.1</version>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>com.my.App</mainClass>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
这是一个示例,其中 pluginManagement 具有插件的版本及其配置。 常规插件部分仅指定执行详细信息:
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.4.1</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>com.my.App</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.3</version>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
请注意,子poms可以override pluginManagement 定义。
另请参阅this问题及其答案。