使用 maven 如何在使用 `maven-assembly-plugin` 时将所有依赖项和我的 Java 项目文件捆绑在输出 jar 中?
With maven how to bundle all dependencies AND my Java project filesin the output jar when using `maven-assembly-plugin`?
我正在使用 maven-assembly-plugin
从我的 maven 项目创建一个输出 jar。我的 pom.xml
的相关部分是这样的:
.
.
.
<dependencies>
<dependency>
.
.
.
</dependency>
.
.
.
</dependencies>
<build>
<sourceDirectory>src</sourceDirectory>
<plugins>
.
.
.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>my.package.TheApp</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
.
.
.
</plugins>
</build>
.
.
.
当我 运行 `mvn clean install assembly:single`` 生成的 jar 文件确实包含依赖项,但它不 包含我的项目文件. 运行 装有
的罐子
java -jar TheApp-0.1.2-SNAPSHOT-jar-with-dependencies.jar
我收到消息 Error: Could not find or load main class my.package.TheApp
。 那么如何包含我的项目文件呢?(我想设置 useProjectArtifact
,但是 according to the maven-assembly-plugin doco 这个 属性 默认是 true
.)
通过浏览 Stack Overflow I found the solution:
运行 mvn clean compile assembly:single
而不是 mvn clean install assembly:single
。 :-)
或者甚至更好地将 pom.xml
程序集绑定到包阶段(感谢@khmarbaise!):
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
.
.
.
<executions>
<execution>
<id>make-assembly</id> <!-- this is used for inheritance merges -->
<phase>package</phase> <!-- bind to the packaging phase -->
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
然后是 运行 mvn clean package
(或者 mvn clean install
如果你愿意的话)。
我正在使用 maven-assembly-plugin
从我的 maven 项目创建一个输出 jar。我的 pom.xml
的相关部分是这样的:
.
.
.
<dependencies>
<dependency>
.
.
.
</dependency>
.
.
.
</dependencies>
<build>
<sourceDirectory>src</sourceDirectory>
<plugins>
.
.
.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>my.package.TheApp</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
.
.
.
</plugins>
</build>
.
.
.
当我 运行 `mvn clean install assembly:single`` 生成的 jar 文件确实包含依赖项,但它不 包含我的项目文件. 运行 装有
的罐子java -jar TheApp-0.1.2-SNAPSHOT-jar-with-dependencies.jar
我收到消息 Error: Could not find or load main class my.package.TheApp
。 那么如何包含我的项目文件呢?(我想设置 useProjectArtifact
,但是 according to the maven-assembly-plugin doco 这个 属性 默认是 true
.)
通过浏览 Stack Overflow I found the solution:
运行 mvn clean compile assembly:single
而不是 mvn clean install assembly:single
。 :-)
或者甚至更好地将 pom.xml
程序集绑定到包阶段(感谢@khmarbaise!):
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
.
.
.
<executions>
<execution>
<id>make-assembly</id> <!-- this is used for inheritance merges -->
<phase>package</phase> <!-- bind to the packaging phase -->
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
然后是 运行 mvn clean package
(或者 mvn clean install
如果你愿意的话)。