Maven学习笔记

1、Maven启用代理访问?

    找到Maven安装目录/conf/settings.xml文件:

<proxies>
   <!-- proxy
    | Specification for one proxy, to be used in connecting to the network.
    | 设置代理服务器(防止Internet访问限制,无法访问外网下载中央仓库依赖)-->
   <proxy>
    <id>optional</id>
    <active>true</active>
    <protocol>http</protocol>
    <username>proxyuser</username>
    <password>proxypass</password>
    <host>proxy.host.net</host>
    <port>80</port>
    <nonProxyHosts>local.net|some.host.com</nonProxyHosts>
   </proxy>
</proxies>

    id                         代理唯一标识

    active                  是否启用代理

    protocol              协议

    username           代理服务器用户名

    password            代理服务器密码

    host                    代理服务器主机

    port                     代理服务器端口

    nonProxyHosts    不需要代理的服务器主机地址


2、更改Maven本地仓库目录?

    找到Maven安装目录/conf/settings.xml文件:

   <!-- localRepository
    | The path to the local repository maven will use to store artifacts.
    | 修改本地仓库路径
    | Default: ${user.home}/.m2/repository
   -->
   <localRepository>/path/to/local/repo</localRepository>


3、Maven依赖包下载步骤?

    1)在Maven本地资源库中查找,如果没找到,进入第2步,否则退出;

    2)在Maven中央存储库中查找,如果没找到,进入第3步,否则退出;如果找到了,则下载到本地资源库;

    3)在Maven远程存储库中查找,如果没找到,提示错误信息,否则退出;如果找到了,则下载到本地资源库


4、Maven添加远程仓库?

    1)在pom.xml文件中添加Java.net存储库:

<!-- 配置Java.net远程存储库 -->
<repositories>
   <repository>
    <id>java.net</id>
    <url>https://maven.java.net/content/repositories/public/</url>
   </repository>
</repositories>

    2)在pom.xml文件中添加JBoss存储库:

<!-- 配置JBoss远程存储库 -->
<repositories>
   <repository>
    <id>JBoss repository</id>
    <url>http://repository.jboss.org/nexus/content/groups/public/</url>
   </repository>
</repositories>

    3)也可自己定义一个远程仓库。


5、添加jar包到本地资源库?

        执行以下命令:

        mvn install:install-file -Dfile=c:\xxx-xxx.jar -DgroupId=com.google.code -DartifactId=kaptcha -Dversion={version} -Dpackaging=jar

        -Dfile                 jar包所在目录

        -DgroupId         项目组

        -DartifactId       名称

        -Dversion         版本

        -Dpackaging    打包格式


6、使用Maven命令快速构建Maven项目?

    1)创建Maven项目:

        使用maven-archetype-quickstart 模板创建 Java 项目,执行命令:

        mvn archetype:generate -DgroupId={project-packaging} -DartifactId={project-name} -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

        也可以使用maven-archetype-webapp模板来创建一个Maven的Web项目(WAR),不加默认为普通Java项目(JAR);

    2)构建成Eclilpse项目:

        进入到Maven项目目录  cd {Maven_project_dir}     

        执行命令 mvn eclipse:eclipse -Dwtpversion=2.0

        -Dwtpversion=2.0告诉Maven将项目转为Eclipse转为Web项目(WAR)

     3)添加依赖包:

        在pom.xml文件中添加所需的依赖包,然后执行  mvn eclipse:eclipse  命令,重新引入依赖包;

     4)项目打包:

        在Maven项目目录下,执行命令:

        mvn package

        打包后的文件会生成在target目录下。


7、修改Maven编译的JDK版本?

    修改pom.xml文件:

<build>
    <plugins>
       <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>2.3.2</version>
          <configuration>
             <source>1.6</source>
             <target>1.6</target>
          </configuration>
       </plugin>
    </plugins>
</build>


8、Maven插件?

    1)执行插件的语法: 

        mvn [plugin-name]:[goal-name]     

        例如:编译mvn compiler:compile

    2)常见插件:

        clean 编译后的清理目标,删除目标目录
        compiler 编译 Java 源文件
        surefile 运行JUnit单元测试,创建测试报告
        jar         从当前项目构建 JAR 文件
        war         从当前项目构建 WAR 文件
        javadoc 产生用于该项目的 Javadoc
        antrun 从构建所述的任何阶段运行一组 Ant任务

    3)构建插件:

        在生成过程中执行,并在 pom.xml 中的<build/> 元素进行配置:

<build>
    <plugins>
      <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-antrun-plugin</artifactId>
         <version>1.1</version>
         <executions>
            <execution>
            <id>id.clean</id>
            <phase>clean</phase>
            <goals>
              <goal>run</goal>
            </goals>
            <configuration>
              <tasks>
                <echo>clean phase</echo>
              </tasks>
            </configuration>
          </execution>     
        </executions>
     </plugin>
    </plugins>
</build>

9、添加外部依赖?

    由于项目中需要用到的jar包比较多,而且每个项目依赖的不一样,所以可能导致我们所需的依赖jar包在本地库、中央库和远程库都没有,这时,我们可以像之前普通项目管理jar包那样,把jar包直接放到项目的某个目录下,如lib,然后再pom.xml添加对应的外部依赖,否则编译时会报错:

<dependency>
    <groupId>ldapjdk</groupId>
    <artifactId>ldapjdk</artifactId>
    <scope>system</scope>
    <version>1.0</version>
    <systemPath>${basedir}\src\lib\ldapjdk.jar</systemPath>
</dependency>


10、Maven快照?

    快照(SNAPSHOT)是一个特殊版本,指出目前开发拷贝。不同于常规版本,Maven 每生成一个远程存储库都会检查新的快照版本。

    在使用快照(SNAPSHOT)时,Maven 自动获取最新的快照版本。不过我们也可以强制使用 -U 切换到任何 maven 命令来下载最新的快照版本:

    mvn clean package -U


11、Maven传递依赖性?


    以下是上述的依赖图的细节:

  •     APP-UI-WAR依赖于App-Core-lib和 App-Data-lib;
  •     Root 是 App-Core-lib 和 App-Data-lib 的父类;
  •     Root 定义LIB1,LIB2,Lib3作为其依赖部分依赖关系。
    Maven使用传递性依赖机制来管理这些细节。
    App-Core-lib的pom.xml如下,App-Date-lib的类似:
<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/xsd/maven-4.0.0.xsd">
    <parent>
       <artifactId>Root</artifactId>
       <groupId>com.companyname.groupname</groupId>
       <version>1.0</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.companyname.groupname</groupId>
    <artifactId>App-Core-lib</artifactId>
    <version>1.0</version> 
    <packaging>jar</packaging>
</project>

12、部署基于Maven的war文件到Tomcat服务器?
    1)修改Tomcat认证用户密码:
        %TOMCAT7_PATH%/conf/tomcat-users.xml
<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
	<role rolename="manager-gui"/>
	<role rolename="manager-script"/>
	<user username="admin" password="password" roles="manager-gui,manager-script" />
</tomcat-users>
    2)修改Maven安装目录 的settings.xml配置文件:
        %MAVEN_PATH%/conf/settings.xml
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
    <servers>	   
       <server>
          <id>Tomcat7Server</id>
          <username>admin</username>
          <password>password</password>
       </server>
    </servers>
</settings>
    3)修改pom.xml文件:
<plugin>
    <groupId>org.apache.tomcat.maven</groupId>
    <artifactId>tomcat7-maven-plugin</artifactId>
    <version>2.2</version>
    <configuration>
       <url>http://localhost:8080/manager/text</url>
       <server>Tomcat7Server</server>
       <path>/yiibaiWebApp</path>
    </configuration>
</plugin>
    4)发布到Tomcat
        mvn tomcat7:deploy        部署
        mvn tomcat7:undeploy    删除
        mvn tomcat7:redeploy     重新部署
    
13、Maven常见命令?
     mvn clean                     清理编译文件
     mvn install                    打包,并复制到本地存储库
     mvn package                打包
     mvn test                         测试
     mvn -Dtest=TestApp    指定对象测试
     mvn site                         生产Maven项目文档
     mvn compile                 编译

14、Maven配置中央仓库?
    1)修改pom.xml文件:
<repositories>        
   <repository>        
     <id>central</id>        
     <name> Maven Repository Switchboard</name>        
     <layout>default</layout>        
     <url>http://repo1.maven.org/maven2</url>        
     <snapshots>        
       <enabled>false</enabled>        
     </snapshots>        
  </repository>        
</repositories> 
    2)修改Maven安装目录 的settings.xml配置文件:
        %MAVEN_PATH%/conf/settings.xml
<mirrors>        
   <mirror>        
      <id>maven-net-cn</id>        
      <name>MavenChinaMirror</name>        
      <url>http://maven.net.cn/content/groups/public/</url>        
      <mirrorOf>central</mirrorOf>        
   </mirror>        
</mirrors>
    <mirrorOf>表示只为central仓库做镜像,如果想为所有的仓库做镜像那么可以改为:<mirrorOf>*</mirrorOf>

15、Maven命令参数?   
    1)-D   参入属性参数   
          mvn package -Dmaven.test.skip=true   告诉maven打包的时候跳过单元测试
    2)-P   使用指定Profile配置
<profiles>
       <!-- 开发环境配置 -->
       <profile>
          <id>dev</id>
          <properties>
             <env>dev_env</env>
          </properties>
          <activation>
             <activeByDefault>true</activeByDefault>
          </activation>
       </profile>
       <!-- 测试环境配置 -->
       <profile>
          <id>test</id>
          <properties>
             <env>test_env</env>
          </properties>
       </profile>
       <!-- 生产环境配置 -->
       <profile>
          <id>prod</id>
          <properties>
            <env>prod_env</env>
          </properties>
       </profile>
</profiles>
    
<build>
      <filters>
          <filter>config/${env}.properties</filter>
      </filters>
      <resources>
          <resource>
              <directory>src/main/resources</directory>
              <filtering>true</filtering>
           </resource>
      </resources>
    profiles定义了各个环境的变量id,filters中定义了变量配置文件的地址,其中地址中的环境变量就是上面profile中定义的值,resources中是定义哪些目录下的文件会被配置文件中定义的变量替换。
    通过maven可以实现按不同环境进行打包部署,命令为: mvn package -P dev
    其中“dev“为环境的变量id,代表使用Id为“dev”的profile
    3)-e 显示maven运行出错的信息
    4)-o 离线执行命令,即不去远程仓库更新包
    5)-X 显示maven允许的debug信息
    6)-U 强制去远程更新snapshot的插件或依赖,默认每天只更新一次

    ......






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值