用于 Maven 的 Launch4J 端口已被详细记录,但我无法以我想要的方式使用它。
是否有一些好的 Maven 插件可以生成具有以下标准的 exe 文件(如果可能,至少其中一些):
- 没有包装罐子
- jar 可以位于相对于 jar 文件的不同目录中
- jars 正是依赖项,因此将新 jars 添加到具有不同名称的目录中没有任何效果。
- Xmx 和 Xms 可以通过一个文件来配置
- 如果可能,进程以 .exe 名称运行(不是那么重要)
你可以使用插件
<plugin>
<groupId>com.akathist.maven.plugins.launch4j</groupId>
<artifactId>launch4j-maven-plugin</artifactId>
<version>1.5.2</version>
</plugin>
用于将 jar 文件包装在 exe 中。
事先你可以像aberes的回答中描述的那样把所有东西都装在一个罐子里。
因此,例如,配置可能如下所示:
<plugin>
<groupId>com.akathist.maven.plugins.launch4j</groupId>
<artifactId>launch4j-maven-plugin</artifactId>
<executions>
<execution>
<id>l4j-clui</id>
<phase>install</phase>
<goals>
<goal>launch4j</goal>
</goals>
<configuration>
<!--
<headerType>gui</headerType> -->
<headerType>console</headerType>
<jar>target/yourFinalJar.jar</jar>
<outfile>target/${project.build.finalName}.exe</outfile>
<errTitle>${project.name}</errTitle>
<icon>your/Icon.ico</icon>
<jre>
<path>jre</path> <!-- if you bundle the jre -->
</jre>
<versionInfo>
<fileVersion>1.2.3.4</fileVersion>
<txtFileVersion>${project.version}</txtFileVersion>
<fileDescription>${project.description}</fileDescription>
<copyright>(c) ${project.inceptionYear} MyCompany</copyright>
<productVersion>1.0.0.0</productVersion>
<txtProductVersion>${project.version}</txtProductVersion>
<productName>${project.name}</productName>
<companyName>MyCompany</companyName>
<internalName>${project.name}</internalName>
<originalFilename>${project.build.finalName}.exe</originalFilename>
</versionInfo>
</configuration>
</execution>
</executions>
</plugin>
您可以使用 maven-assembly-plugin,执行两次,一次指定主类并将所有依赖项打包在一个 jar 中,因此您不需要任何类路径。第二次执行会将所有配置文件放在同一个 jar 中。所以最后你没有一个 exe,你有一个 zip 文件中包含清单文件的 jar。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2-beta-5</version>
<executions>
<execution>
<id>make-assembly1</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<archive>
<manifest>
<mainClass>com....class.with.the.main</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</execution>
<execution>
<id>make-assembly2</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<descriptors>
<descriptor>distribution.xml</descriptor>
</descriptors>
</configuration>
</execution>
</executions>
</plugin>