maven的使用记录
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了maven的使用记录相关的知识,希望对你有一定的参考价值。
Maven是一个项目管理及项目描述工具;它能使项目管理更简单及标准化;
它的构建生命周期有:准备资源-验证-编译-测试-打包-安装-发布
maven有三种构建配置文件
1、每个项目有 pom.xml这个配置文件;
2、每个用户有%USER_HOME%/.m2/settings.xml 这个配置文件,如当前用户可以cat ~/.m2/settings.xml查看配置内容;
3、还有一个全局的配置文件%M2_HOME%/conf/settings.xml,如用mac中的brew安装的maven可以通过cat /usr/local/Cellar/maven/3.5.4/libexec/conf/settings.xml这个方式查看配置内容;
(1)mac 安装maven
brew search maven
brew install maven
mvn -v
(2)生成本地java项目,项目名叫testweb
mvn archetype:generate -DgroupId=www.testweb.webapp -DartifactId=testweb -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false
#archetype 是maven内置的一个插件
#DgroupId 包名
#DartifactId 项目名
#DarchetypeArtifactId 项目生成结构目前经常用到的值有
# maven-archetype-quickstart Java Project项目结构
# maven-archetype-webapp JavaWeb Project项目结构
上面命令执行完会生成下面的目录结构
testweb
├── pom.xml
└── src
└── main
├── resources
└── webapp
├── WEB-INF
│?? └── web.xml
└── index.jsp
pom.xml (pom:project object model)里面有项目构建信息,pom.xml内容可以如下:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<!--指定包名-->
<groupId>www.testweb.webapp</groupId>
<!--指定项目名-->
<artifactId>testweb</artifactId>
<!--指定最后的打包方式-->
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>testweb Maven Webapp</name>
<url>http://maven.apache.org</url>
<!--在需要上传jar资源的项目时配置distributionManagement,其中<id>设置需要跟.m2文件夹下的settings.xml中<servers>下的id相同。<url>需要指定nexus中配置的hosts Repository资源的地址;配置了这个maven 编译项目,并通过mvn deploy 来发布jar资源内部的镜像服务器-->
<distributionManagement>
<repository>
<id>server_id</id>
<name>myNexus</name>
<url>http://nexus_ip:8081/repository/host-releases/</url>
</repository>
</distributionManagement>
<!--指定外部依赖-->
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<!--外部依赖的包名-->
<groupId>myjdk</groupId>
<!--外部依赖的项目名-->
<artifactId>myjdk</artifactId>
<!--指定该外部依赖的使用范围,可选择的值有compile,provided,provided,test,system,import-->
<!--具体参考http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html-->
<scope>system</scope>
<version>1.0</version>
<!--指定依赖的包路径-->
<systemPath>${basedir}srclibmyjdk.jar</systemPath>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.1</version>
<executions>
<execution>
<id>id.pre-clean</id>
<phase>pre-clean</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<tasks>
<echo>pre-clean phase</echo>
</tasks>
</configuration>
</execution>
<execution>
<id>id.clean</id>
<phase>clean</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<tasks>
<echo>clean phase</echo>
</tasks>
</configuration>
</execution>
<execution>
<id>id.post-clean</id>
<phase>post-clean</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<tasks>
<echo>post-clean phase</echo>
</tasks>
</configuration>
</execution>
<execution>
<id>id.validate</id>
<phase>validate</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<tasks>
<echo>validate phase</echo>
</tasks>
</configuration>
</execution>
<execution>
<id>id.compile</id>
<phase>compile</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<tasks>
<echo>compile phase</echo>
</tasks>
</configuration>
</execution>
<execution>
<id>id.test</id>
<phase>test</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<tasks>
<echo>test phase</echo>
</tasks>
</configuration>
</execution>
<execution>
<id>id.package</id>
<phase>package</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<tasks>
<echo>package phase</echo>
</tasks>
</configuration>
</execution>
<execution>
<id>id.deploy</id>
<phase>deploy</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<tasks>
<echo>deploy phase</echo>
</tasks>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
<finalName>testweb</finalName>
</build>
<!--profiles定义各个环境的变量配置-->
<profiles>
<profile>
<!-- 本地开发环境 -->
<id>dev</id>
<!--properties自己定义的一些属性-->
<properties>
</properties>
</profile>
<profile>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<id>prod</id>
<!-- 发布环境 -->
<properties>
</properties>
</profile>
</profiles>
</project>
1、其中dependencies指定包涵的依赖jar包,packaging是指定发部时打包的方式,如jar、war、ear等
2、基中groupId:artifactId:version用这个在maven的仓库中标记着一个项目
3、在项目目录下执行mvn help:effective-pom这条命令可以查看项目的详细的pom信息
4、build里是构建过程的配置,这里引入了一个插入件org.apache.maven.plugins:maven-antrun-plugin:1.1,引入这个插件来在构建过程的pre-clean和clean及post-clean的三个阶段各执行一个echo任务,及validate、compile、test、package、deploy这些构建阶段也都各执行一个echo;
5、maven有profile功能,为项目设置不同的配置,如上项目有两个配置环境一个dev与prod,也就是一个是开发环境配置,一个是生产环境配置。其中prod通过activeByDefault这个设置成了默认配置环境,也就是当mvn package时调用的就是prod的配置环境信息,如果需要调用dev的配置环境信息需要mvn package -P dev,也就是需要通过-P这个参数来指使用的配置环境;像这些指的配置所对应的文件是在放到src/main/resources目录下的config文件夹下,config下有多个环境的配置文件,命名规则为是application-环境名称.properties
(3)
pre-clean 就是指定清除编译前要做什么
mvn clean 清除之前编译过程产生的文件及目录
mvn post-clean 有三个阶段 mvn pre-clean , mvn clean, mvn post-clean;就是指定清除编译后要做什么
mvn validate 验证项目是否正确及需要的信息是否是有用的
mvn compile 编译项目
mvn test 测试项目
mvn package 打包项目如生成war包或jar包
mvn deploy 布置项目
以上是关于maven的使用记录的主要内容,如果未能解决你的问题,请参考以下文章
maven web项目的web.xml报错The markup in the document following the root element must be well-formed.(代码片段