码迷,mamicode.com
首页 > 其他好文 > 详细

maven的使用记录

时间:2018-10-18 00:53:48      阅读:133      评论:0      收藏:0      [点我收藏+]

标签:用户   gen   pos   nal   开发环境   内容   date   oca   brew   

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}\src\lib\myjdk.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的使用记录

标签:用户   gen   pos   nal   开发环境   内容   date   oca   brew   

原文地址:http://blog.51cto.com/quietnight/2301502

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!