Java 使用maven创建可执行jar
我正在尝试使用maven创建一个可执行jar。我有一个java web项目,我使用m2e eclipse插件将其转换为maven。为了创建一个可运行的jar,我的pom.xml按照以下方式配置Java 使用maven创建可执行jar,java,maven,executable-jar,Java,Maven,Executable Jar,我正在尝试使用maven创建一个可执行jar。我有一个java web项目,我使用m2e eclipse插件将其转换为maven。为了创建一个可运行的jar,我的pom.xml按照以下方式配置 <build> <sourceDirectory>src</sourceDirectory> <resources> <resource> <directory>src</direct
<build>
<sourceDirectory>src</sourceDirectory>
<resources>
<resource>
<directory>src</directory>
<excludes>
<exclude>**/*.java</exclude>
</excludes>
</resource>
</resources>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
<!-- to create a runnable jar -->
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>com.test.main</mainClass> // main being main.java which has my main method
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
</plugins>
</build>
src
src
**/*.爪哇
maven编译器插件
3.1
1.7
1.7
maven汇编插件
com.test.main//main是main.java,它有我的main方法
带有依赖项的jar
然后我在(编辑配置)选项卡中编辑了->运行方式->我在目标选项卡中添加了“包”。该项目构建成功,但当我尝试运行jar时,我一直得到“找不到主清单”,哪里出了问题?我认为您错过了将插件绑定到生命周期阶段的机会:
[...]
[...]
maven汇编插件
2.4
带有依赖项的jar
com.test.main//main是main.java,它有我的main方法
组装
包裹
单一的
[...]
它工作了,但它生成了一个70MB的文件,我真的不知道这是什么,如果您能向我解释一下,我将非常感激。请尝试运行mvn dependency:tree
以查看项目的所有依赖项。您正在将所有这些内容绑定到一个jar中(您可以执行jar-tf
),以查看所有空间的去向。您可以尝试Maven Shade插件,该插件可以删除未使用的.class文件。
<project>
[...]
<build>
[...]
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.4</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>com.test.main</mainClass> // main being main.java which has my main method
</manifest>
</archive>
</configuration>
<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>
[...]
</project>