Как я могу добавить шаг упаковщика в скрипт сборки maven?

Я пытаюсь изменить процедуру сборки для создания отдельного исполняемого файла. Есть несколько инструментов, которые делают это, и Packr кажется идеальным. Также, насколько я могу судить, официально поддерживается мой Maven.

Проведя примерно эпоху googlin', мне не повезло найти простой пример maven XML шага сборки packr. Также я очень новичок в Maven, что делает это более сложным. Тем не менее, мне кажется, что должен быть довольно стандартный блок XML, в котором нужно изменить только несколько имен jar, чтобы он работал.

Я также работаю в Eclipse и пытаюсь создать исполняемые файлы для Windows и Linux.

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

Пакр в Maven: https://mvnrepository.com/artifact/com.badlogicgames.packr/packr

3 ответа

Я написал плагин для сборки maven, который упаковывает java api. Плагин построен на основе версии 2 пакета.

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

Я не мог найти плагин 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>

Если у вас уже есть <build> а также <plugins> раздел в вашем pom.xml, а затем просто взять <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 и упаковку для linux/mac, используя стандартный инструмент Oracle javapackager через javafx-maven-plugin. Я бы связался с этими двумя, но Stackru говорит мне, что мне не хватает представителя, чтобы включить более двух ссылок.

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

Другие вопросы по тегам