Maven - исполняемый файл из проекта Java - PullRequest
0 голосов
/ 07 февраля 2019

Мне нужно использовать maven (для школьного проекта), чтобы создать исполняемый файл из одной команды maven.Я никогда не использовал maven и пробовал много решений здесь на stackoverlow.Решения создали файл jar, но файл так и не открылся.

Это структура моего проекта

src
    com
        project
                code
                       swing
                             programm
                                      interface
                                               Main.class

Я знаю, что это не соглашение maven, однако изменение его сейчас означало бы, что янужно настроить импорт (так как 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>

Что я должен поместить внутрь, чтобы создать исполняемый файл?

Ответы [ 2 ]

0 голосов
/ 07 февраля 2019

Ответ TimurJD верен, однако я хотел бы объяснить шаг за шагом, что на самом деле происходит и почему.

  • Для того, чтобы jar был исполняемым, JVM должна знать, где находится ваш main method is.

  • Для этого вам понадобится файл с именем 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, просто запустите maven install goal,либо из вашей IDE, либо из командной строки.После вы должны найти папку с именем target в вашем проекте.Эта папка будет содержать исполняемый файл jar.

  • Чтобы запустить jar, вы можете позвонить из командной строки:

    java -jar MyProject.jar
    

Также необходимоУчтите, что если вы не соблюдаете стандарт maven о сохранении исходного кода в src/main/java, вам придется явно указывать исходную папку.

0 голосов
/ 07 февраля 2019

Вам необходимо добавить плагин к вашему 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

... вот ссылка на doc http://www.mojohaus.org/exec-maven-plugin/usage.html

Возможны различные решения, в зависимости от ваших требований: https://www.baeldung.com/executable-jar-with-maven

...