一.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>
分享到:
相关推荐
Maven有多个生命周期阶段,如`clean`、`compile`、`test`、`package`等,每个阶段都包含了若干个目标(goal)。`maven-assembly-plugin`主要用于创建自定义的归档文件,如JAR、WAR或ZIP,通常在`package`阶段运行。 ...
4. **插件使用**:Maven 插件丰富,如使用 `maven-surefire-plugin` 运行测试,`maven-assembly-plugin` 创建自定义打包,`maven-javadoc-plugin` 生成 API 文档等。 5. **生命周期与构建阶段**:Maven 有三个主要...
Maven的聚合功能(Aggregation)则可以帮助管理多个模块的多项目构建。 总的来说,《Maven权威指南》中文版PDF文档及对应的代码示例,为学习和掌握Maven提供了全面的学习资料。通过阅读文档并实践其中的代码,...
Maven 还提供了丰富的插件系统,允许扩展其功能,例如,可以使用maven-javadoc-plugin生成API文档,使用maven-source-plugin打包源代码,或者使用maven-assembly-plugin创建自定义的归档文件。这些插件使得Maven不...
例如,使用maven-assembly-plugin来创建自定义的打包格式。 四、Maven坐标 每个Maven依赖都由groupId、artifactId和version三个部分组成,这称为依赖的坐标。例如,`com.example:my-project:1.0.0`表示`my-project...
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权威指南...
开发者可以通过安装额外的插件扩展Maven的功能,例如,可以使用maven-assembly-plugin创建自定义的归档文件,或者使用maven-source-plugin和maven-javadoc-plugin生成源代码和文档。在Maven 3.5.4中,这些插件的性能...
每个任务对应了一个插件目标(goal),每个插件会有一个或者多个目标。用户可以通过两种方式调用 Maven 插件目标,一种是将插件目标与生命周期阶段(lifecycle phase)绑定,另一种是直接在命令行指定要执行的插件...
在实际项目中,Maven还提供了多模块项目的支持,通过一个父POM管理多个子模块,便于大型项目的构建和管理。同时,Maven支持不同的打包类型,如JAR、WAR、EAR等,适应不同的应用场景。 最后,Maven的聚合项目和 ...
** Maven插件及其使用方法(2) ** Maven是一个强大的Java项目管理工具,它简化了构建、依赖管理和项目文档的生成。Maven的核心在于它的项目对象模型(Project Object Model,POM),通过POM.xml文件,Maven可以理解...
Maven的生命周期包括`clean`、`default`(也叫`compile`)、`site`三个阶段,每个阶段包含多个阶段。开发者可以自定义插件来扩展Maven的功能。例如,使用`maven-jar-plugin`来控制JAR文件的生成,或者使用`maven-...
通过插件,我们可以扩展Maven的功能,比如使用`maven-javadoc-plugin`生成API文档,`maven-site-plugin`生成项目站点,或者`maven-assembly-plugin`创建自定义的打包格式。 总的来说,Maven为Java开发者提供了高效...
使用Maven的`assembly`插件,你可以自定义打包配置,包括添加依赖、排除特定文件,甚至创建包含所有依赖的独立可运行JAR。而`shade`插件则可以进一步重命名和重组类文件,避免类路径冲突,尤其在多个库有相同类名的...
Maven 的构建生命周期由多个阶段组成,包括但不限于: - **clean**:清理项目的工作目录。 - **validate**:验证项目是否正确无误。 - **compile**:编译源代码。 - **test**:使用适当的单元测试框架运行单元...
Maven的插件系统进一步扩展了其功能,比如可以通过`maven-surefire-plugin`进行单元测试,`maven-war-plugin`打包Web应用,`maven-assembly-plugin`创建可分发的包等。开发者还可以自定义插件或者使用社区已有的大量...
- **使用Maven插件**:虽然Idea提供了内置的打包功能,但有时候使用Maven的插件(如maven-assembly-plugin或maven-jar-plugin)可能会更加灵活和强大。 #### 五、常见问题及解决方法 - **缺少依赖问题**:如果发现...
- **处理类冲突**:当多个库包含相同类时,必须确保插件正确处理这种情况,避免运行时错误。 - **排除无用的资源**:尽管fat jar方便,但过大的体积可能导致不必要的下载和存储开销。因此,合理排除未使用的库和资源...
### 如何基于Maven在Eclipse下创建Web工程 #### Maven与Eclipse简介 Maven是Apache软件基金...在未来的工作中,我们可以进一步探索Maven的高级特性,比如自定义生命周期、多模块项目等,以更好地满足项目的复杂需求。
Maven Assembly Plugin用于创建自定义的归档文件,如JAR、WAR、ZIP等,它可以包含项目本身及其依赖、资源文件等。通过定义assembly.xml配置文件,可以指定归档的详细内容和结构,常用于生成可分发的软件包。 【Ant...