如何在Maven中构建SWT/JFace应用并打包成可执行的jar包

简介: 前面在Maven中构建SWT应用的时候发现SWT相关jar包在Maven中央仓库上找不到,后面在stackoverflow上有人提供了一个仓库地址:https://github.com/maven-eclipse/maven-eclipse.github.io。 根据上面所说,SWT相关依赖在Maven中央仓库中不可取,目前存在的Maven仓库不包括所有平台的包,也没有源码和debug包,总之就是没有提供可信赖和自动化的方式更新和仓库再生,而Redirecting...这个仓库会自动下载并打包官方的SWT发布版本。

前面在Maven中构建SWT应用的时候发现SWT相关jar包在Maven中央仓库上找不到,后面在stackoverflow上有人提供了一个仓库地址:https://github.com/maven-eclipse/maven-eclipse.github.io


   根据上面所说,SWT相关依赖在Maven中央仓库中不可取,目前存在的Maven仓库不包括所有平台的包,也没有源码和debug包,总之就是没有提供可信赖和自动化的方式更新和仓库再生,而Redirecting...这个仓库会自动下载并打包官方的SWT发布版本。


一、如何添加swt/jface相关依赖



在pom.xml中添加下面的仓库地址:

<!-- 包含swt的第三方仓库 -->
<repository>
  <id>maven-eclipse-repo</id>
  <url>http://maven-eclipse.github.io/maven</url>
</repository>
<!-- 包含jface的第三方仓库 -->
<repository>
  <id>Jabylon-Plugin---</id>
  <url>http://www.jabylon.org/maven/</url>
</repository>
<dependencies>
        <!--swt相关依赖-->
  <dependency>
    <groupId>org.eclipse.swt</groupId>
    <artifactId>org.eclipse.swt.win32.win32.x86</artifactId>
    <version>${swt.version}</version>
    <!-- To use the debug jar, add this -->
    <classifier>debug</classifier>
  </dependency>
  <dependency>
    <groupId>org.eclipse.swt</groupId>
    <artifactId>org.eclipse.swt.win32.win32.x86_64</artifactId>
    <version>${swt.version}</version>
  </dependency>
  <dependency>
    <groupId>org.eclipse.swt</groupId>
    <artifactId>org.eclipse.swt.gtk.linux.x86</artifactId>
    <version>${swt.version}</version>
  </dependency>
  <dependency>
    <groupId>org.eclipse.swt</groupId>
    <artifactId>org.eclipse.swt.gtk.linux.x86_64</artifactId>
    <version>${swt.version}</version>
  </dependency>
  <dependency>
    <groupId>org.eclipse.swt</groupId>
    <artifactId>org.eclipse.swt.cocoa.macosx.x86_64</artifactId>
    <version>${swt.version}</version>
  </dependency>
        <!--jface相关依赖-->
        <dependency>
    <groupId>org.eclipse</groupId>
    <artifactId>jface</artifactId>
    <version>3.9.1</version>
  </dependency>
</dependencies>

二、如何通过Maven打包成可执行的jar并打包依赖



在pom.xml中添加assembly插件:

<build>
    <finalName>${project.name}</finalName>
  <plugins>
    <plugin>
      <!-- 这里不需要指定groupId,默认为org.apache.maven.plugins -->
      <artifactId>maven-assembly-plugin</artifactId>
      <version>3.1.0</version>
      <configuration>
        <archive>
          <manifest>
            <addClasspath>true</addClasspath>
            <mainClass>com.universe.ui.MainWindow</mainClass>
          </manifest>
        </archive>
        <descriptorRefs>
          <descriptorRef>jar-with-dependencies</descriptorRef>
        </descriptorRefs>
      </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>
  </plugins>
</build>


<descriptorRef>jar-with-dependencies</descriptorRef>标签中的内容必须为jar-with-dependencies,否则打包时会出错,若想自定义配置描述符,参考Apache Maven Assembly Plugin – Usage。


配完后运行maven package会生成连个包,一个通过maven-jar-plugin打包生成的"工程名.jar",另一个是通过maven-assembly-plugin打包生成的"工程名-jar-with-dependencies.jar"。后者可通过java -jar  工程名-jar-with-dependencies.jar 直接运行。


相关文章
|
2月前
|
Java 应用服务中间件 测试技术
Maven学习笔记(一):Maven基础(基于命令行的学习和应用)
Maven 是一款 Java 项目构建工具,主要用于管理 jar 包及其依赖关系。 本文主要了解Maven基础知识及基础应用,旨在为之后的进一步学习奠定基础。 内容上几近全为学习《尚硅谷2022版Maven教程》整理所得。 仅供参考。
232 80
Maven学习笔记(一):Maven基础(基于命令行的学习和应用)
|
3天前
|
Java Maven
maven打瘦包,且只打入部分想打入的依赖瘦包
maven打瘦包,且只打入部分想打入的依赖瘦包 设计 工程结构分析 环境管理 城市资源 安全工程 工程管理
26 10
|
14天前
|
Java Maven Android开发
【Azure Developer】VS Code打包Java maven Project 遇见 BUILD FAILURE
Unknown lifecycle phase "lean". You must specify a valid lifecycle phase or a goal in the format <plugin-prefix>:<goal> or <plugin-group-id>:<plugin-artifact-id>[:<plugin-version>]:<goal>
|
15天前
|
缓存 IDE Java
idea的maven项目打包时没有source下的文件
【10月更文挑战第21天】idea的maven项目打包时没有source下的文件
30 1
|
1月前
|
Java 测试技术 Maven
maven 打包命令
maven 打包命令
22 6
|
1月前
|
Java Linux Maven
IDEA如何用maven打包(界面和命令两种方式)
【10月更文挑战第14天】本文介绍了两种Maven项目打包方法:命令行与IDEA界面。首先确保已安装Maven并配置环境变量,通过`mvn -v`检查安装。命令行打包需进入项目目录,执行`mvn package`,之后在`target`目录查看结果。IDEA打包则需配置Maven路径,打开Maven Projects窗口,双击Lifecycle下的`package`阶段,同样在`target`目录查找生成文件,并在Build窗口查看日志以排查问题。
526 1
|
1月前
|
Java Shell Maven
Flink-11 Flink Java 3分钟上手 打包Flink 提交任务至服务器执行 JobSubmit Maven打包Ja配置 maven-shade-plugin
Flink-11 Flink Java 3分钟上手 打包Flink 提交任务至服务器执行 JobSubmit Maven打包Ja配置 maven-shade-plugin
94 4
|
1月前
|
Java Maven
用graalvm将maven项目打包成可执行文件
本文介绍了如何使用GraalVM将Maven项目打包成可执行文件,包括引入依赖和插件、编写代码、执行打包命令以及运行查看结果的完整过程。
111 0
用graalvm将maven项目打包成可执行文件
|
1月前
|
Java Maven
maven打包出现没有主类的原因,详细分析并解决
本文分析了使用Maven打包Java应用时找不到或无法加载主类的问题,通常是由于未配置主类或打包时未包含依赖,并通过添加Maven插件解决了依赖问题,同时指出了JavaFX应用可能遇到的运行时组件缺失的错误。
118 0
maven打包出现没有主类的原因,详细分析并解决
|
29天前
|
Java 应用服务中间件 Maven
SpringBoot Maven 项目打包的艺术--主清单属性缺失与NoClassDefFoundError的优雅解决方案
SpringBoot Maven 项目打包的艺术--主清单属性缺失与NoClassDefFoundError的优雅解决方案
294 0

推荐镜像

更多
下一篇
无影云桌面