我试图了解如何将所有依赖项作为打包的jar(包括jar中的jar)包含在可执行jar文件中,但是我失败了。
有人可以指出我正确的方向吗?
请注意,我不会将生成的胖罐子包装在其中,而不是使用maven-assembly-plugin获得的未包装的同类罐子。
答案 0 :(得分:1)
您要创建的内容称为胖罐子。您可以通过执行后续步骤来生成它。
在您的POM文件中添加构建部分,如下所示:
<build>
<finalName>example</finalName>
<plugins>
<!-- Set a compiler level -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>${jdk.version}</source>
<target>${jdk.version}</target>
</configuration>
</plugin>
<!-- Maven Assembly Plugin -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.4.1</version>
<configuration>
<!-- get all project dependencies -->
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<!-- MainClass in mainfest make a executable jar -->
<archive>
<manifest>
<mainClass>com.example.Main</mainClass>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<!-- bind to the packaging phase -->
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
上面的“ Maven组件插件”绑定到Maven的打包阶段,以生成最终的Jar,只需使用以下命令对其进行打包即可:
mvn package
将在目标文件夹中创建两个jar文件。
example.jar –仅您的项目类
example-jar-with-dependencies.jar –项目和依赖项类位于单个jar中。
您现在可以使用以下方法检查脂肪罐的内容:
jar tf target/example-jar-with-dependencies.jar
答案 1 :(得分:0)
在pom.xml中包含依赖项。使用mvn clean install
构建项目,结果将具有这些依赖性。
然后,您可以使用
java -cp <jar Filename> <main class name>