maven

groupId 域名倒写

artifactId 项目名

version X.X.X里程碑

比如:1.0.0-SNAPSHOT

第一个X 大版本有重大变革

第二个X 小版本 修复bug,增加功能

第三个X 更新

里程碑版本:

SNAPSHOT (快照,开发版)

alpha(内部测试)

beta(公开测试)

Release | RC (发布版)

GA(正常版本)

 

Maven conf/settings.xml修改

1.<localRepository>/path/to/local/repo</localRepository>

2.

<mirror>
      <id>aliyunmaven</id>
      <mirrorOf>*</mirrorOf>
      <name>阿里云公共仓库</name>
      <url>https://maven.aliyun.com/repository/public</url>
    </mirror>
<mirror>
  <id>nexus_aliyun</id>
  <mirrorOf>central</mirrorOf>
  <name>Nexus aliyun</name>
  <url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>

 

Maven目录结构:

pom.xml

src -- main -- java  com.xxxx.demo.Hello

       -- resources

     -- test -- java

         -- resources

 

执行命令:

1.编译java文件
mvn compile
2.执行main方法
mvn exec:java -Dexec.mainClass="com.xxxx.demo.Hello"

maven命令格式如下:
mvn [plugin-name]:[goal-name]
mvn -version 显示版本信息
mvn clean 清理项目生产的临时文件,一般是模块下的target目录
compile 编译源代码,一般编译模块下的src/main/java目录
package 项目打包工具会在模块下的target目录生成jar或war等文件
test 测试命令或执行src/test/java/下junit的测试用例.
install 将打包的jar/war文件复制到你的本地仓库中,供其他模块使用
deploy 将打包的文件发布到远程参考,提供其他人员进行下载依赖
site 生成项目相关信息的网站
eclipse:eclipse 将项目转化为Eclipse项目
dependency:true 打印出项目的整个依赖树
archetype:generate 创建Maven的普通java项目
tomcat7:run 在tomcat容器中运行web应用
jetty:run 调用Jetty 插件的 Run 目标在Jetty Servlet 容器中启动 web 应用

注意:运行maven命令的时候,首先需要定位到maven项目的目录,也就是项目的pom.xm1文件所在的目录。否则,必以通过参数来指定项目的目录,
-D 传入属性参数
mvn package -Dmaven.test.skip=true
-P 使用指定的Profile配置
<profiles>
  <profile>
    <id>dev</id>
    <properties>
      <env>dev</env>
    </properties>
    <activation>
      <activeByDefault>true</activeByDefault>
    </activation>
  </profile>
  <profile>
    <id>prod</id>
    <properties>
      <env>prod</env>
    </properties>
  </profile>
</profiles>

<build>
  <filters>
    <filter>config/${env}.properties</filter>
  </filters>
  <resources>
    <resource>
       <directory>src/main/resources</directory>
       <filtering>true</filtering>
    </resource>
  </resources>
  ... ...
</build>
profles 定义了各个环境的变量 id,filters中定义了变量配置文件的地址,其中地址中的环增变量就是上面
profile 中定义的值,resources 中是定义哪些目录下的文件会被配置文件中定义的变量替换

通过maven可以实现按不同环境进行打包部署,例如:
mvn package -Pdev -Dmaven.test.skip=true
表示打包本地环境,并跳过单元测试

<build>
    <finalName>Demo01</finalName>
    <plugins>
      <plugin>
        <groupId>org.mortbay.jetty</groupId>
        <artifactId>maven-jetty-plugin</artifactId>
        <version>6.1.25</version>
        <configuration>
          <!-- 热部署,每10秒扫描一次 -->
          <scanIntervalSeconds>10</scanIntervalSeconds>
          <!-- 可指定当前项目的站点名 -->
          <contextPath>/demo01</contextPath>
          <connectors>
            <connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
              <port>9090</port><!-- 设置启动的端口号 -->
            </connector>
          </connectors>
        </configuration>
      </plugin>

      <!-- 设置在plugins标签中 -->
      <plugin>
        <groupId>org.apache.tomcat.maven</groupId>
        <artifactId>tomcat7-maven-plugin</artifactId>
        <version>2.2</version>
        <configuration>
          <port>8081</port>
          <path>/demo01</path>
          <uriEncoding>UTF-8</uriEncoding>
          <server>tomcat7</server>
        </configuration>
      </plugin>
    </plugins>
  </build>

 

<properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.encoding>UTF-8</maven.compiler.encoding>
        <java.version>1.8</java.version>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>

 

 项目打包war
clean compile package -Pdev -Dmaven.test.skip=true

 

<!-- 对于项目资源文件的配置放在bui1d中-->
<resources>
    <resource>
        <directory>src/main/resources/${env}</directory>
    </resource>
    <resource>
        <directory>src/main/iava</directory>
        <includes>
            <include>**/*.xml</include>
            <include>**/*.properties</include>
            <include>**/*.tld</include>
        </inc1udes>
        <filtering>false</filtering>
    </resource>
</resources>

 传递性依赖

A-B-C(2.0版本)和A-D-C(1.0版本) 这 样存在传递性依赖

引入本地jar包

mvn install:install-file -Dfile=/path/to/example.jar -DgroupId=com.example -DartifactId=example -Dversion=1.0 -Dpackaging=jar

mvn install:install-file -Dfile=/path/to/example.jar  //自动引入jar包

 

posted on 2023-02-17 22:22  王飞侠  阅读(16)  评论(0编辑  收藏  举报

导航