`
byx5185
  • 浏览: 113192 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

使用Maven assembly打多个自定义包及War包简介

    博客分类:
  • J2EE
阅读更多
一.Maven基本命令

创建java项目:
mvn archetype:create -DarchetypeGroupId=org.apache.maven.archetypes -DgroupId=com.mycompany.app -DartifactId=myProject

创建web项目:
mvn archetype:create -DarchetypeArtifactId=maven-archetype-webapp -DgroupId=com.mycompany.app  -DartifactId=myProject

增加eclipse项目信息:
cd myProject
mvn eclipse:eclipse

编译:
mvn compile

运行测试:
mvn test

打包(java项目打出jar;web项目打出war):
mvn package


安装jar到本地仓库:
mvn install


清除生成的文件:
mvn clean

========================================================
War 简单介绍
<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-war-plugin</artifactId>
				<configuration>
					<!-- 释放将项目的类文件打成jar放到lib目录中。
				打成jar的好处是:只修改class时,可以只更新jar。 -->
					<archiveClasses>true</archiveClasses>
					<webResources>
						<!--
							src/main/resources是默认的资源目录。
							当archiveClasses=true时,resources中的文件资源会被打到jar中;
							当archiveClasses=false时,resources中的文件资源在war的根目录。
						-->
						<resource>
							<!-- config作为source folder,不会被打到jar中。 -->
							<directory>src/main/config</directory>
							<targetPath>WEB-INF/classes</targetPath>
							<filtering>true</filtering>
						</resource>
					</webResources>
					<archive>
						<manifest>
							<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
							<addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
						</manifest>
						<manifestEntries>
							<Built-On>${timestamp}</Built-On>
						</manifestEntries>
					</archive>
				</configuration>
				<executions>
					<execution>
						<id>generate-manifest</id>
						<phase>prepare-package</phase>
						<goals>
							<goal>manifest</goal>
						</goals>
					</execution>
				</executions>
			</plugin>

需要的属性配置:
<properties>
		<maven.build.timestamp.format>yyyy-MM-dd HH:mm:ss</maven.build.timestamp.format>
		<timestamp>${maven.build.timestamp}</timestamp>
</properties>


========================================================
Assembly打多个自定义包

首先了解两个参数:构建目录/最终项目构建名称
${project.build.directory}/${project.build.finalName}
对应target\myProject

打多个包
每个包有自己的执行器,都绑定到某个生命周期上,有各自的描述符文件。
Pom中配置如下:
<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-assembly-plugin</artifactId>
				<version>2.2-beta-5</version>
				<executions>
					<execution>
						<id>make-jar</id><!-- 随便一个名字 -->
						<phase>package</phase><!-- 绑定到package生命周期阶段上 -->
						<goals>
							<goal>single</goal><!-- 只运行一次 -->
						</goals>
						<configuration>
							<skipAssembly>false</skipAssembly><!-- 跳过这个执行器 -->
							<!-- 自定义输出目录(finalName为最终项目构建名称) -->
							<!--
								<outputDirectory>
								${project.build.directory}/${project.build.finalName}/WEB-INF/lib
								</outputDirectory>
							-->
							<!-- 描述符文件 -->
							<descriptors>
								<descriptor>src/main/assembly/jar.xml</descriptor>
							</descriptors>
						</configuration>
					</execution>
										<execution>
						<id>make-zip</id>
						<phase>package</phase>
						<goals>
							<goal>single</goal>
						</goals>
						<configuration>
							<skipAssembly>true</skipAssembly>
							<descriptors>
								<descriptor>src/main/assembly/zip.xml</descriptor>
							</descriptors>
						</configuration>
					</execution>

				</executions>
			</plugin>


jar.xml文件
<assembly
	xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
	<id>jar-release</id>
	<formats>
		<format>jar</format>
	</formats>
	<includeBaseDirectory>false</includeBaseDirectory>
	<fileSets>
		<fileSet>
			<directory>${project.build.directory}/classes</directory>
			<includes>
				<include>**</include>
			</includes>
			<excludes>
				<exclude>server.properties</exclude>
			</excludes>
			<outputDirectory>/</outputDirectory>
		</fileSet>
	</fileSets>
</assembly>


zip.xml文件
<assembly
	xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
	
	<id>release</id>
	<formats>
		<format>zip</format>
	</formats>
    <includeBaseDirectory>false</includeBaseDirectory>	
	<fileSets>
		<fileSet>
			<directory>${project.build.directory}/${project.build.finalName}</directory>
			<includes>
				<include>**</include>
			</includes>	
			<outputDirectory>/project</outputDirectory>
		</fileSet>
		
	</fileSets>
</assembly>
分享到:
评论
1 楼 bo_hai 2015-04-23  
Assembly 打出来的包没有加时间戳呢?

相关推荐

    maven打包dubbo服务接口(maven-assembly-plugin)

    Maven有多个生命周期阶段,如`clean`、`compile`、`test`、`package`等,每个阶段都包含了若干个目标(goal)。`maven-assembly-plugin`主要用于创建自定义的归档文件,如JAR、WAR或ZIP,通常在`package`阶段运行。 ...

    maven安装包

    4. **插件使用**:Maven 插件丰富,如使用 `maven-surefire-plugin` 运行测试,`maven-assembly-plugin` 创建自定义打包,`maven-javadoc-plugin` 生成 API 文档等。 5. **生命周期与构建阶段**:Maven 有三个主要...

    Maven权威指南中文版pdf文档及对应代码

    Maven的聚合功能(Aggregation)则可以帮助管理多个模块的多项目构建。 总的来说,《Maven权威指南》中文版PDF文档及对应的代码示例,为学习和掌握Maven提供了全面的学习资料。通过阅读文档并实践其中的代码,...

    apache-maven

    Maven 还提供了丰富的插件系统,允许扩展其功能,例如,可以使用maven-javadoc-plugin生成API文档,使用maven-source-plugin打包源代码,或者使用maven-assembly-plugin创建自定义的归档文件。这些插件使得Maven不...

    maven构建项目可以粘贴的内容

    例如,使用maven-assembly-plugin来创建自定义的打包格式。 四、Maven坐标 每个Maven依赖都由groupId、artifactId和version三个部分组成,这称为依赖的坐标。例如,`com.example:my-project:1.0.0`表示`my-project...

    Maven权威指南 很精典的学习教程,比ANT更好用

    Maven权威指南 Authors Tim O'Brien (Sonatype, Inc.) , John Casey (Sonatype, Inc.) , Brian Fox (Sonatype, Inc.) , Bruce Snyder () , Jason Van Zyl (Sonatype, Inc.) , Juven Xu () Abstract Maven权威指南...

    apache-maven-3.5.4.zip

    开发者可以通过安装额外的插件扩展Maven的功能,例如,可以使用maven-assembly-plugin创建自定义的归档文件,或者使用maven-source-plugin和maven-javadoc-plugin生成源代码和文档。在Maven 3.5.4中,这些插件的性能...

    [maven] 常用插件解析.docx

    每个任务对应了一个插件目标(goal),每个插件会有一个或者多个目标。用户可以通过两种方式调用 Maven 插件目标,一种是将插件目标与生命周期阶段(lifecycle phase)绑定,另一种是直接在命令行指定要执行的插件...

    Maven学习教程分享

    在实际项目中,Maven还提供了多模块项目的支持,通过一个父POM管理多个子模块,便于大型项目的构建和管理。同时,Maven支持不同的打包类型,如JAR、WAR、EAR等,适应不同的应用场景。 最后,Maven的聚合项目和 ...

    maven插件及其使用方法(2)

    ** Maven插件及其使用方法(2) ** Maven是一个强大的Java项目管理工具,它简化了构建、依赖管理和项目文档的生成。Maven的核心在于它的项目对象模型(Project Object Model,POM),通过POM.xml文件,Maven可以理解...

    maven安装与配置.zip

    Maven的生命周期包括`clean`、`default`(也叫`compile`)、`site`三个阶段,每个阶段包含多个阶段。开发者可以自定义插件来扩展Maven的功能。例如,使用`maven-jar-plugin`来控制JAR文件的生成,或者使用`maven-...

    (win)maven安装包(免费)

    通过插件,我们可以扩展Maven的功能,比如使用`maven-javadoc-plugin`生成API文档,`maven-site-plugin`生成项目站点,或者`maven-assembly-plugin`创建自定义的打包格式。 总的来说,Maven为Java开发者提供了高效...

    java打包技巧.rar

    使用Maven的`assembly`插件,你可以自定义打包配置,包括添加依赖、排除特定文件,甚至创建包含所有依赖的独立可运行JAR。而`shade`插件则可以进一步重命名和重组类文件,避免类路径冲突,尤其在多个库有相同类名的...

    Learning Apache Maven

    Maven 的构建生命周期由多个阶段组成,包括但不限于: - **clean**:清理项目的工作目录。 - **validate**:验证项目是否正确无误。 - **compile**:编译源代码。 - **test**:使用适当的单元测试框架运行单元...

    项目开发管理软件maven

    Maven的插件系统进一步扩展了其功能,比如可以通过`maven-surefire-plugin`进行单元测试,`maven-war-plugin`打包Web应用,`maven-assembly-plugin`创建可分发的包等。开发者还可以自定义插件或者使用社区已有的大量...

    Idea打包jar包

    - **使用Maven插件**:虽然Idea提供了内置的打包功能,但有时候使用Maven的插件(如maven-assembly-plugin或maven-jar-plugin)可能会更加灵活和强大。 #### 五、常见问题及解决方法 - **缺少依赖问题**:如果发现...

    fat jar打包插件

    - **处理类冲突**:当多个库包含相同类时,必须确保插件正确处理这种情况,避免运行时错误。 - **排除无用的资源**:尽管fat jar方便,但过大的体积可能导致不必要的下载和存储开销。因此,合理排除未使用的库和资源...

    如何基于maven在eclipse下创建web工程

    ### 如何基于Maven在Eclipse下创建Web工程 #### Maven与Eclipse简介 Maven是Apache软件基金...在未来的工作中,我们可以进一步探索Maven的高级特性,比如自定义生命周期、多模块项目等,以更好地满足项目的复杂需求。

    maven-tutorial:Apache Maven,httpclient,tomcat,ant和tile指南

    Maven Assembly Plugin用于创建自定义的归档文件,如JAR、WAR、ZIP等,它可以包含项目本身及其依赖、资源文件等。通过定义assembly.xml配置文件,可以指定归档的详细内容和结构,常用于生成可分发的软件包。 【Ant...

Global site tag (gtag.js) - Google Analytics