Maven内置变量说明: ${basedir} 项目根目录 ${project.build.directory} 构建目录,缺省为target ${project.build.outputDirectory} 构建过程输出目录,缺省为target/classes ${project.build.finalName} 产出物名称,缺省为${project.artifactId}-${project.version} ${project.packaging} 打包类型,缺省为jar ${project.xxx} 当前pom文件的任意节点的内容
方式1
修改pom.xml增加如下内容
org.apache.maven.plugins maven-jar-plugin 2.5.5 true lib/ com.sysware.HelloWorld
运行mvn clean package即可
特点:
这种方式虽然可以打包,但是不会将依赖包也添加进去。所以我认为这种方式的打包适合写一个工具,然后打成JAR包,导入其他工程使用,如果是一个单独运行的JAR包,则不适用。
方式2
在pom.xml增加如下内容
org.apache.maven.plugins maven-assembly-plugin 2.5.5 false jar-with-dependencies com.juvenxu.mvnbook.helloworld.HelloWorld make-assembly package assembly
运行mvn assembly:assembly ( 我自己使用mvn clean package也是可以的)
这个方式和方式1不同,这种打包方式,将项目及所依赖的所有jar包打包成一个jar,让打出来的JAR包成为一个可独立运行的JAR包
方式3
test-${project.version} src/main/java src/main/resources ${project.build.directory} *.txt *.properties org.apache.maven.plugins maven-compiler-plugin lib org.apache.maven.plugins maven-jar-plugin true lib/ com.eya.main.Hello org.apache.maven.plugins maven-dependency-plugin copy package copy-dependencies ${project.build.directory}/lib org.apache.maven.plugins maven-resources-plugin 2.4 UTF-8 maven-source-plugin 2.1 true UTF-8 compile jar
方式3和方式3是比较复杂的打包方式,但是可以自己定义细节,比如需要哪些文件被打包,哪些文件不打包进去,哪些文件放到哪里等等。
方式4
${project.build.directory}/classes src/main/resources true **/*.xml org.apache.maven.plugins maven-compiler-plugin 3.0 org.apache.maven.plugins maven-shade-plugin 2.0 package shade com.test.testguava.app.App applicationContext.xml true executable