如何在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发布版本。

一、如何添加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并打包依赖

这里要用到maven-assembly-plugin插件而不是maven-jar-plugin,maven-jar-plugin并不会打包依赖,而通过maven-assembly-plugin可以打包依赖、组件、文档和其它文件到jar中,具体参考Maven官网关于assembly插件的介绍:https://maven.apache.org/plugins/maven-assembly-plugin

在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 直接运行。

 

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
将Java的jar打包执行jar,可以使用Maven或Gradle等构建工具来实现。 以下是使用Maven将Java的jar打包执行jar的步骤: 1. 在pom.xml文件添加以下插件: ```xml <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>3.2.0</version> <configuration> <archive> <manifest> <addClasspath>true</addClasspath> <mainClass>com.example.MainClass</mainClass> </manifest> </archive> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>3.2.4</version> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> <transformers> <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> <mainClass>com.example.MainClass</mainClass> </transformer> </transformers> </configuration> </execution> </executions> </plugin> </plugins> </build> ``` 2. 在命令行运行以下命令,将Java的jar打包执行jar: ```bash mvn package ``` 此命令将在target目录下生一个名为`your-project-name.jar`的可执行jar文件。 在这个例子,我们使用了Maven的`maven-jar-plugin`插件来生一个普通的jar文件,然后使用`maven-shade-plugin`插件来将其打包一个可执行jar文件。在Maven的配置,我们指定了可执行jar的`mainClass`,并使用`ManifestResourceTransformer`来将其添加到可执行jar的MANIFEST.MF文件。 通过这种方式,我们可以将Java的jar打包执行jar,并且可以在命令行直接运行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

凌波漫步&

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值