如何在maven构建脚本中添加打包器步骤?

时间:2016-09-09 12:06:07

标签: java eclipse maven packr

我尝试调整构建过程以生成独立的可执行文件。有一些工具可以做到这一点,Packr似乎是完美的。据我所知,它正式支持我的maven。

花了大约一段googlin'我没有幸运找到一个简单的maven XML示例,它包含了一个打包器构建步骤。我也是Maven的新手,这让这更复杂。在我看来,应该有一个相当标准的XML块,其中只需要更改几个jar名称才能使其正常工作。

我也在eclipse工作并尝试为windows和linux构建可执行文件。

Packr:https://github.com/libgdx/packr

Maven中的Packr:https://mvnrepository.com/artifact/com.badlogicgames.packr/packr

3 个答案:

答案 0 :(得分:5)

我编写了一个maven构建插件,它包装了packr java api。该插件围绕打包器的第2版构建。

https://github.com/stevenmz/packer-maven-plugin

答案 1 :(得分:3)

我也找不到任何maven插件。

在maven central中有1.2版的packr,但请记住,这是一个相当旧的版本(https://github.com/libgdx/packr/issues/58)。

您可以使用标准的exec-maven-plugin来绘制packr 1.2依赖项,然后运行它(参见http://www.mojohaus.org/exec-maven-plugin/examples/example-exec-using-plugin-dependencies.html)。

pom.xml构建文件中的相关片段可能类似于:

<build>
  <plugins>         
    <plugin>
      <groupId>org.codehaus.mojo</groupId>
      <artifactId>exec-maven-plugin</artifactId>
      <version>1.5.0</version>
      <dependencies>
        <!-- https://mvnrepository.com/artifact/com.badlogicgames.packr/packr -->
        <dependency>
          <groupId>com.badlogicgames.packr</groupId>
          <artifactId>packr</artifactId>
          <version>1.2</version>
        </dependency>
      </dependencies>

      <executions>
        <execution>
          <id>package-native-windows</id>

          <phase>package</phase>
          <goals>
            <goal>java</goal>
          </goals>

          <configuration>
            <includeProjectDependencies>false</includeProjectDependencies>
            <includePluginDependencies>true</includePluginDependencies>
            <executableDependency>
              <groupId>com.badlogicgames.packr</groupId>
              <artifactId>packr</artifactId>
            </executableDependency>

            <mainClass>com.badlogicgames.packr.Packr</mainClass>
            <arguments>
              <argument>packr-windows-config.json</argument>
            </arguments>
          </configuration>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>

如果您的pom.xml中已经有<build><plugins>部分,那么只需取出<plugin>位并将其放入其中。

json配置文件可能类似于:

{
  "platform": "windows",
  "jdk": "jre-8u102-windows-x64.zip",
  "executable": "MyApp",
  "appjar": "target/MyApp-jar-with-dependencies.jar",
  "classpath": [ "MyApp-jar-with-dependencies.jar" ],
  "mainclass": "com.foo.MyAppMain",
  "outdir": "target/native-windows"
}

有一件事需要注意,packr 1.2似乎删除了'outdir'目录,所以要小心使用'target'目录以外的东西。

如果它有所帮助,我个人最终使用launch4j使用launch4j-maven-plugin打包windows,并使用Oracle的标准javapackager工具通过javafx-maven-plugin打包linux / mac。我会链接到这两个,但StackOverflow告诉我,我没有足够的代表来包含两个以上的链接。

答案 2 :(得分:0)

1。在pom.xml中定义配置文件,适用于Windows,Linux和Mac OS X 2.假设我已经下载了packr.jar,只需调用必要的配置文件

<profiles>
    <profile>
        <id>windows-profile</id>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>exec-maven-plugin</artifactId>
                    <version>1.6.0</version>
                    <executions>
                        <execution>
                            <phase>package</phase>
                            <goals>
                                <goal>exec</goal>
                            </goals>
                        </execution>
                    </executions>
                    <configuration>
                        <executable>java</executable>
                        <arguments>
                            <argument>-jar</argument>
                            <argument>${basedir}/packaging/packr.jar</argument>
                            <argument>${basedir}/packaging/config-windows.json</argument>
                        </arguments>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </profile>
</profiles>

要获得Windows发行版,请告诉Maven所需的配置文件:

clean install -Pwindows-profile

您还可以在下面看到config-windows.json:

{
  "platform": "windows64",
  "jdk": "C:/Program Files/Java/jdk1.8.0_144",
  "executable": "file-sort",
  "classpath": [
    "target/file-sort-jar-with-dependencies.jar"
  ],
  "mainclass": "com.iscorobogaci.fx.FxApplication",
  "output": "../windows64"
}

在GitHub上查看:https://github.com/scorobogaci/file-sorting-app