@xtccc
2016-06-25T23:54:51.000000Z
字数 1639
阅读 2959
Maven
参考链接:
在发布版本时,我们需要对外发布一个zip文件,里面将会包含:
- README.md文件,在zip文件的根目录下
- 我们的应用程序自身的jar包,在zip文件的bin目录下
- 启动应用的脚本文件,在zip文件的bin目录下
- 应用运行时所需要的依赖包,在zip文件的jar目录下
- 应用运行是所需的配置文件,在zip文件的conf目录下
我们可以利用maven-assembly-plugin
这个插件来实现这一需求。
假设我们的项目结构如下:
pom.xml
文件加入如下的内容:
<project>
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.5.3</version>
<configuration>
<descriptors>
<descriptor>src/main/assembly.xml</descriptor>
</descriptors>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
src/main/assembly.xml
文件内容如下:
<assembly>
<id>bin</id>
<formats>
<!-- 最终生成一个ZIP文件 -->
<format>zip</format>
</formats>
<!-- 把依赖加入到生成的ZIP文件中 -->
<dependencySets>
<dependencySet>
<!-- lib不包含Project artifact,
且不包含scope为provided/runtime的依赖 -->
<useProjectArtifact>false</useProjectArtifact>
<outputDirectory>lib</outputDirectory>
<unpack>false</unpack>
</dependencySet>
</dependencySets>
<fileSets>
<fileSet>
<directory>distributions</directory>
<outputDirectory></outputDirectory>
<includes>
<include>README.md</include>
</includes>
</fileSet>
<fileSet>
<directory>distributions</directory>
<outputDirectory>bin</outputDirectory>
<includes>
<include>startup.sh</include>
</includes>
</fileSet>
<fileSet>
<!-- 把project artifact放入到bin目录下 -->
<directory>${project.build.directory}</directory>
<outputDirectory>bin</outputDirectory>
<includes>
<include>*.jar</include>
</includes>
</fileSet>
</fileSets>
</assembly>
运行如下的构建命令:
$ mvn clean package
在target目录下会生成一个文件bigdata-1.0-SNAPSHOT-bin.zip
, 解压后的内容如下:
配置的过程非常明了,我就不解释了。