如何使用maven创建发布包?

时间:2009-04-28 06:38:31

标签: java maven-2

我使用Maven2构建桌面应用程序。

我想不时发布(只需将所有项目和第三方jar复制到一个目录中并生成一个run.bat文件)。

怎么做?

4 个答案:

答案 0 :(得分:8)

您需要自己创建run.bat并将其放在src / main / assembly / scripts中。然后,您需要在src / main / assembly中创建一个assembly.xml文件。

以下是您可能要使用的assembly.xml文件的示例。它会创建一个包含所有依赖项jar和run.bat的tar.gz。

<assembly>
    <id>1.0</id>
    <formats>
        <format>tar.gz</format>
    </formats>
    <includeBaseDirectory>false</includeBaseDirectory>
    <dependencySets>
        <dependencySet>
            <outputDirectory>/lib</outputDirectory>
        </dependencySet>
    </dependencySets>
    <fileSets>
        <fileSet>
            <directory>target</directory>
            <outputDirectory>/lib</outputDirectory>
            <includes>
                <include>*.jar</include>
            </includes>
        </fileSet>
        <fileSet>
            <directory>src/main/assembly/scripts</directory>
            <outputDirectory>/scripts</outputDirectory>
            <includes>
                <include>*.bat</include>
            </includes>
        </fileSet>
    </fileSets>
</assembly>

最后,在你的pom.xml文件中添加程序集插件:

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-assembly-plugin</artifactId>
        <configuration>
            <descriptors>
                <descriptor>src/main/assembly/assembly.xml</descriptor>
            </descriptors>
        </configuration>
        <executions>
            <execution>
                <phase>package</phase>
                <goals>
                    <goal>attached</goal>
                </goals>
            </execution>
        </executions>
    </plugin>

现在,当你运行“mvn install”时,你应该看到你的tar.gz被创建了。

要发布运行:

mvn释放:准备
mvn release:执行

答案 1 :(得分:1)

好的,我得到了一些关于dogbane的答案的帮助

我使用了自己的assemlby文件src / main / assemlby.assembly.xml

<assembly>
   <id>teleinf</id>
   <formats>
      <format>dir</format>
   </formats>
   <moduleSets>
      <moduleSet>
         <includes>
            <include>pl..........:core</include>
            <include>pl..........:gui</include>
         </includes>
         <binaries>
            <outputDirectory>../../release</outputDirectory>
            <unpack>false</unpack>
         </binaries>
      </moduleSet>
   </moduleSets>
   <fileSets>
      <fileSet>
         <directory>src/main/assembly/</directory>
         <outputDirectory>../../release</outputDirectory>
         <includes>
            <include>*.bat</include>
         </includes>
      </fileSet>
   </fileSets>
</assembly> 

并将以下内容添加到pom

 <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <configuration>
           <descriptors>
              <descriptor>src/main/assembly/assembly.xml</descriptor>
           </descriptors>
        </configuration>
     </plugin>

我必须自己编写一个run.bat - 所以它并不完全令人满意但会这样做。

答案 2 :(得分:0)

我会使用maven发布插件,请参阅:

答案 3 :(得分:0)

只是对dogbane

给出的答案的补充

您的.bat文件将运行打包的jar文件,其文件名反映了应用程序的当前版本,例如

java -Xms256m -Xmx350m -jar bin\yourApp-1.10.1-SNAPSHOT.jar

在每个版本中,此文件都需要使用应用程序的新版本名称进行更新。这也可以自动化。

在pom.xml文件中添加此部分:

<build>
  <resources>
    <resource>
      <filtering>true</filtering>
      <directory>${project.build.sourceDirectory}/../assembly/scripts</directory>
      <includes>
        <include>yourApp.bat</include>
      </includes>
    </resource>
    ...
  </resources>
  ...
</build>

这假设您已将yourApp.bat文件放在文件夹中:

src/main/assembly/scripts

yourApp.bat文件的内容应如下所示:

java -Xms256m -Xmx350m -jar bin\${project.build.finalName}.jar

只需运行Maven命令即可享受。