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的使用记录的主要内容,如果未能解决你的问题,请参考以下文章

CSP核心代码片段记录

maven web项目的web.xml报错The markup in the document following the root element must be well-formed.(代码片段

记录C#常用的代码片段

Sphinx - 在代码块片段中使用省略号 (...)

discuz X3.1 源代码阅读,记录代码片段

提效小技巧——记录那些不常用的代码片段