如何在没有IDE的情况下,通过pom使用maven和内部的本地外部库制作一个可执行的.jar文件?

qvsjd97n  于 2022-11-22  发布在  Maven
关注(0)|答案(1)|浏览(173)

我在没有IDE的情况下学习java,我想用FX构建一个项目,并且有几个库,所以我想以一种“粗略”的方式将它们连接起来。

public void go() {
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(400,100);
        frame.add(new JLabel("Test Lib"));
        frame.setVisible(true);
    }

它创建了一个简单的摆动窗口,将其命名为Lib,用maven构建它,并创建了testlib.JAR。然后创建了另一个程序,

import TEST.Lib;
public static void main( String[] args )
    {
        new Lib().go();
    }

然后编辑了pom,添加了一个插件使其可执行(没有外部库也能正常工作),添加了一个依赖项,Maven创建了一个.jar,但是当我运行它时,它没有显示窗口,当我将代码放在外部方法之前时,它可以工作
第一次
最后,当我通过cmd运行它时,它工作得很好

javac -cp "path\to\jar\testlib.jar" TEST\App.java
java -cp "path\to\jar\testlib.jar" TEST.App

如何让它发挥作用?

x8diyxa7

x8diyxa71#

什么对我有用。
添加本地依赖项

<dependency>
      <groupId>testlib</groupId>
      <artifactId>testlib</artifactId>
      <scope>system</scope>
      <version>1</version>
      <systemPath>${basedir}/libs/testlib.jar</systemPath>
 </dependency>

在中添加路径到您.jar,并记住版本然后在中添加这两个插件首先复制目标中依赖项,然后使其可执行

<build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <executions>
          <execution>
            <id>copy-dependencies</id>
            <phase>prepare-package</phase>
            <goals>
              <goal>copy-dependencies</goal>
            </goals>
            <configuration>
              <outputDirectory>${project.build.directory}/lib</outputDirectory>
              <overWriteReleases>false</overWriteReleases>
              <overWriteSnapshots>false</overWriteSnapshots>
              <overWriteIfNewer>true</overWriteIfNewer>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <configuration>
          <archive>
            <manifest>
              <mainClass>TEST.App</mainClass>
            </manifest>
            <manifestEntries>
              <Class-Path>lib/testlib-1.jar</Class-Path>
            </manifestEntries>

          </archive>
        </configuration>
      </plugin>
    </plugins>
  </build>

在中,你在target中命名一个文件夹,其中将是依赖项。在中,你应该输入main class。在中,你应该在targer中输入路径,注意Maven将添加版本,在我的例子中是testlib.jar =〉testlib-1.jar

相关问题