Maven的 - 从Java项目的可执行文件

问题描述 投票:3回答:2

我需要使用Maven(为学校项目)创建从一个单一的maven命令的可执行文件。我从来没有使用Maven和这里试穿stackoverlow很多解决方案。该解决方案创建一个jar文件,但该文件从来没有打开。

这是我的项目结构

src
    com
        project
                code
                       swing
                             programm
                                      interface
                                               Main.class

我知道这是不是行家惯例,但是现在正在改变这将意味着我将不得不调整进口(如的IntelliJ不重构一切完美)大约40类。

<?xml version="1.0" encoding="UTF-8"?>
<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>MyGroup</groupId>
<artifactId>myProgramm</artifactId>
<version>0.7-SNAPSHOT</version>
<packaging>jar</packaging>
<name>Hello World</name>
<description>Course Project</description>

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <java.version>1.8</java.version>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

<dependencies>
    <!-- https://mvnrepository.com/artifact/org.xerial/sqlite-jdbc -->
    <dependency>
        <groupId>org.xerial</groupId>
        <artifactId>sqlite-jdbc</artifactId>
        <version>3.25.2</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.junit/junit5-engine -->
    <dependency>
        <groupId>org.junit</groupId>
        <artifactId>junit5-engine</artifactId>
        <version>5.0.0-ALPHA</version>
    </dependency>

</dependencies>

<build>

</build>

我有什么把里面做一个可执行文件?

java maven pom.xml executable-jar
2个回答
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


2
投票

TimurJD的答案是正确的,但是我想说明一步步什么是真正发生的事情及其原因。

  • 为了有一个罐子是可执行JVM需要知道你的main方法。
  • 对于您需要一个叫做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插件只需运行行家install目标,无论是从你的IDE或命令行。之后,你应该找一个在您的项目称为target文件夹。该文件夹将包含可执行的JAR文件。
  • 要运行,你可以在命令行调用的jar: java -jar MyProject.jar

还应该注意的是,除非你保持你的源代码src/main/java你必须明确指定你的源文件夹的Maven的标准遵守。

© www.soinside.com 2019 - 2024. All rights reserved.