Maven的使用经验(二)--打包

在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包。

<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官网中队插件更详细的介绍。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值