Пакет java файлов в exe для windows с maven - PullRequest
3 голосов
/ 20 января 2012

Порт Launch4J для Maven ужасно задокументирован, и я не могу использовать его так, как хочу.

Есть ли какой-нибудь хороший плагин Maven для создания исполняемого файла по следующим критериям (по крайней мере, некоторые из нихесли возможно):

  • Нет упаковки jar
  • Банки могут находиться в разных каталогах относительно файла jar
  • Банки - это в точности зависимости, поэтому добавление новыхjars в каталог с другим именем не имеет никакого эффекта.
  • Xmx и Xms можно настроить через файл
  • Процесс выполняется под именем .exe, если это возможно (не так важно)

Ответы [ 2 ]

1 голос
/ 23 сентября 2013

Вы можете использовать плагин

            <plugin>
                <groupId>com.akathist.maven.plugins.launch4j</groupId>
                <artifactId>launch4j-maven-plugin</artifactId>
                <version>1.5.2</version>
            </plugin>

для упаковки файлов jar в исполняемый файл.

Заранее вы можете обернуть все в одну банку, как описано в ответе 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>
0 голосов
/ 23 сентября 2013

Вы можете использовать плагин maven-assembly-plugin с двумя вариантами выполнения, один из которых задает основной класс и упаковывает все ваши зависимости в один jar-файл, поэтому вам не нужен ни один путь к классам. Второе выполнение поместит все ваши файлы конфигурации в один и тот же файл. Итак, в конце концов у вас нет exe-файла, у вас есть фляга с файлом манифеста в zip-файле.

<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>
...