Maven的使用经验(二)--打包
2012-11-17 18:53
281 查看
在IDE中安装了maven插件之后,就可以直接运行maven package来打包了。
如果没有在IDE中安装插件而是单独安装了maven程序,则可以在命令行中直接执行mvn package来打包。
二者没有本质区别,本文以在IDE中直接为例。
要将项目打包,有两种选择:生成一个jar包;或一个包含jar包,配置文件,脚本文件等等的一个zip文件(assembly)。
如果没有在pom中显示的指定,则会使用默认的插件(通过查看effective pom可以看到)并按默认方式打包。
我们常用maven-jar-plugin来生成jar包。如果希望生成assembly,则除了maven-jar-plugin外,再使用插件maven-assembly-plugin来生成zip包。
注意其中2点:
1,descriptorRef -- jar-with-dependencies 就是将程序依赖的所有第三方类库都打入jar包,这样就不需要在运行时指定class-path了。
2,descriptor -- 指定assembly文件所在的位置。我们还需要创建一个assembly.xml来详细说明package的目录结构和内容。
assembly.xml文件的示例:
这样打好的package名叫例如:project-1_0.zip中解压后就会得到脚本文件以及另外两个目录config(包含配置文件),和lib目录(包含所有依赖的第三方类库和projectName.jar)
我们还可以在assembly按需要构建更复杂的package结构。
从maven-jar-plugin和maven-assembly-plugin的pom文件可以看到它们都指定了:<phase>package</phase>
这会导致运行mvn package命令时运行这两个插件。
直接搜索这两个插件的名字可以找到maven官网中队插件更详细的介绍。
如果没有在IDE中安装插件而是单独安装了maven程序,则可以在命令行中直接执行mvn package来打包。
二者没有本质区别,本文以在IDE中直接为例。
要将项目打包,有两种选择:生成一个jar包;或一个包含jar包,配置文件,脚本文件等等的一个zip文件(assembly)。
如果没有在pom中显示的指定,则会使用默认的插件(通过查看effective pom可以看到)并按默认方式打包。
我们常用maven-jar-plugin来生成jar包。如果希望生成assembly,则除了maven-jar-plugin外,再使用插件maven-assembly-plugin来生成zip包。
<plugin> <artifactId>maven-jar-plugin</artifactId> <version>2.3.1</version> <executions> <execution> <id>default-jar</id> <phase>package</phase> <goals> <goal>jar</goal> </goals> <configuration> <archive> <manifest> <addClasspath>true</addClasspath> <mainClass>com.thomsonreuters.PALFullExtractor.ExtractorMain</mainClass> </manifest> </archive> </configuration> </execution> </executions> </plugin>在上例中,指定mainClass将在manifest文件中加入mainclass,这样jar就可以直接运行了。
<plugin> <artifactId>maven-assembly-plugin</artifactId> <version>2.2</version> <executions> <execution> <id>make-assembly</id> <phase>package</phase> <goals> <goal>single</goal> </goals> <configuration> <archive> <manifest> <mainClass>com.thomsonreuters.PALFullExtractor.ExtractorMain</mainClass> </manifest> </archive> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> <descriptors> <descriptor>D:\projectname\src\main\assembly/assembly.xml</descriptor> </descriptors> </configuration> </execution> </executions> </plugin>
注意其中2点:
1,descriptorRef -- jar-with-dependencies 就是将程序依赖的所有第三方类库都打入jar包,这样就不需要在运行时指定class-path了。
2,descriptor -- 指定assembly文件所在的位置。我们还需要创建一个assembly.xml来详细说明package的目录结构和内容。
assembly.xml文件的示例:
<assembly> <id>package</id> <formats> <format>zip</format> </formats> <includeBaseDirectory>false</includeBaseDirectory> <fileSets> <fileSet> <directory>src/main/resources/config</directory> <outputDirectory>config</outputDirectory> <!--将项目中src/main/resources/config下的内容放入packaeg的第一级config目录中--> <includes> <include>*.xsd</include> <include>*.dtd</include> <include>*.xml</include> <include>*.properties</include> <include>*.key</include> </includes> <lineEnding>lf</lineEnding> </fileSet> <fileSet> <directory>src/main/resources/script</directory> <outputDirectory></outputDirectory> <!--将项目中src/main/resources/script下的内容放入packaeg中--> <includes> <include>*.ksh</include> <include>*.cmd</include> </includes> <lineEnding>lf</lineEnding> </fileSet> </fileSets> <dependencySets> <dependencySet> <outputDirectory>lib</outputDirectory> </dependencySet> </dependencySets> </assembly>
这样打好的package名叫例如:project-1_0.zip中解压后就会得到脚本文件以及另外两个目录config(包含配置文件),和lib目录(包含所有依赖的第三方类库和projectName.jar)
我们还可以在assembly按需要构建更复杂的package结构。
从maven-jar-plugin和maven-assembly-plugin的pom文件可以看到它们都指定了:<phase>package</phase>
这会导致运行mvn package命令时运行这两个插件。
直接搜索这两个插件的名字可以找到maven官网中队插件更详细的介绍。
相关文章推荐
- maven工程使用maven-shade-plugin方式打包找不到本地依赖
- Maven使用本地jar包并打包进war包里面的方法
- eclipse使用maven打包的时候发现静态资源没包含进去
- maven - 使用assembly plugin实现自定义打包
- 初学maven(5)-使用assembly plugin实现自定义打包
- maven打包时出现【java source 1.3中不支持泛型 请使用 -source 5 或更高版本以启用泛型】错误时的解决方法
- 使用maven构建,打包Java项目完整实例
- 使用maven打包jar后 执行jar包问题,Exception in thread "main" org.springframework.beans.factory.parsing.BeanDefi
- 使用Maven Assembly plugin将依赖打包进jar
- maven-使用assembly自定义打包
- Spring boot框架项目,使用maven命令将配置文件打包到jar包外,项目运行读取jar外配置文件
- Maven命令行使用:mvn clean package(打包)
- Maven使用经验总结
- 初学maven(5)-使用assembly plugin实现自定义打包
- 转发:maven打包时始终出现以下提示:-source 1.3 中不支持泛型(请使用 -source 5 或更高版本以启用泛型)
- maven使用之打包应用
- 使用Maven将所有的依赖打包到一个jar里
- Maven 教程(20)— 使用maven-assembly-plugin插件来定制化打包
- eclipse/maven工具打包及使用