概述
本文针对一般的java工程,包括tomcat、springboot、普通的java -jar启动的工程的打包方式说明。
一个示例
在idea中,以项目
和模块
来说明。 项目中的pom一般是总体描述,具体细节在每个模块中,打包信息也同样在每个模块中。
无论哪个模块中的pom设置的profile
,都能从全局识别到。如想输出到xxx目录,只需建立一个空的模块专门配置pom即可(当然,在原模块中的pom配置,就会在原模块下产出)。以hadoop打包为例,在hadoop工程中,我们可以从全局看到如下profiles:
可以看到在不同模块的profile配置,在全局都能看到的,都是能调用的。
以及hadoop的打包脚本:
#!/bin/sh
export JAVA_HOME=/usr/local/jdk1.8.0_65
export PATH=/usr/local/protobuf-2.5.0/bin:$PATH
mvn package -Pdist,native -Dtar -DskipTests -Dmaven.javadoc.skip=true -Drequire.snappy
if [ $? -ne 0 ]; then
exit -1
fi
if [ -d output ]; then
rm -rf output
fi
mkdir output
cp hadoop-dist/target/hadoop-*.tar.gz output/
可以看到输出目录在hadoop-dist/target
,是因为专门建一个空的hadoop-dist
模块用于放打包后的文件,如下:
该pom中部分打包配置:
<profiles>
<profile>
<id>dist</id>
<activation>
<activeByDefault>false</activeByDefault>
<property>
<name>tar</name>
</property>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<id>dist</id>
<phase>prepare-package</phase>
<goals>
<goal>run</goal>
</goals>
...
这里仅以一个大型工程打包作为示例,详细描述见下文。