我需要使用maven(用于学校项目)从单个maven命令创建可执行文件。我从未使用过maven,并在stackoverlow上尝试过许多解决方案。解决方案创建了一个jar文件,但该文件从未打开。
这是我的项目结构
<a href={{ basics.mypage }}>Go to my page</a>
我知道这不是行家惯例,但是现在更改它意味着我将不得不为大约40个类调整导入(因为intelliJ不能完全重构所有内容)。
src
com
project
code
swing
programm
interface
Main.class
要制作可执行文件,我必须放入什么?
答案 0 :(得分:2)
您需要将插件添加到您的pom.xml
文件中
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1</version>
<configuration>
<mainClass>com.example.Main</mainClass>
</configuration>
</plugin>
</plugins>
</build>
并运行程序:mvn clean install exec:java
...这是文档http://www.mojohaus.org/exec-maven-plugin/usage.html
的链接可能有不同的解决方案,具体取决于您的要求:https://www.baeldung.com/executable-jar-with-maven
答案 1 :(得分:2)
TimurJD的答案是正确的,但是我想逐步解释实际发生的情况以及原因。
要使jar可执行文件,JVM需要知道您的main
方法在哪里。
为此,您需要在创建的jar中添加一个名为 META-INF / MANIFEST.MF 的文件。
此文件必须包含对包含您的main
方法的类的引用,该方法是这样完成的:
Main-Class: com.example.ClassContainingMainMethod
创建上述文件的方法有很多,但是由于您使用的是maven,因此此插件可以帮助您创建此清单文件
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.1.1</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>com.my.packege.Main</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
在pom.xml
中插入插件后,只需从IDE或命令行运行maven install
目标即可。之后,您应该在项目中找到一个名为target
的文件夹。该文件夹将包含可执行jar。
要运行jar,可以从命令行调用:
java -jar MyProject.jar
还应注意,除非您遵守将源代码保留在src/main/java
中的maven标准,否则您将必须明确指定源文件夹。