我有一个Maven项目(父项目的子模块),我需要创建一个“带有依赖项的jar”。我将maven-assembly-plugin
添加到pom.xml中,但它没有创建工件。我已经慢慢剥离了pom.xml中的所有其他东西,直到剩下的都是依赖项和这个插件,它仍然不会创建一个带有依赖项的jar。观看mvn clean package
的输出,它会运行clean
,compile
和jar
但从不运行assembly
插件。我不知道为什么。这是pom.xml,有人能发现问题吗?
<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>project</groupId>
<artifactId>project-name</artifactId>
<version>1.0</version>
<name>project-name</name>
<properties>
<build.time>${maven.build.timestamp}</build.time>
<spring.framework.version>4.3.1.RELEASE</spring.framework.version>
<spring.security.version>4.1.1.RELEASE</spring.security.version>
<spring.webflow.version>2.4.2.RELEASE</spring.webflow.version>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<build>
<sourceDirectory>${project.basedir}/src/java</sourceDirectory>
<resources>
<resource>
<directory>${project.basedir}/src/resources</directory>
</resource>
</resources>
<outputDirectory>${project.basedir}/target/classes</outputDirectory>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.0.0</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
[snip]
</dependencies>
</project>
答案 0 :(得分:1)
从程序集中组装应用程序包或分发 描述。此目标适用于绑定到生命周期 或直接从命令行调用(提供所有必需的文件 在构建开始之前可用,或者由另一个目标生成 在命令行之前在此指定之前指定。)
asssembly:single
目标可以通过两种方式使用:
将其绑定到生命周期
或直接从命令行调用
你没有其中任何一个。
例如,您可以将插件执行绑定到package
阶段:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.0.0</version>
<configuration>
<phase>package</phase> <!-- bind to the packaging phase -->
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
现在mvn package
或mvn install
命令将创建具有依赖关系的jar。
您还可以保留实际的插件配置并运行mvn assembly:single
命令。
第二种方法允许根据需要创建具有依赖性的jar,而不是每次构建
如果jar创建是一个不需要在每次构建时执行的长任务,那么这可能是合乎需要的。