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 不需要代理的服务器主机地址
找到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>
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)也可自己定义一个远程仓库。
执行以下命令:
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>
快照(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作为其依赖部分依赖关系。
<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>
<?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>
<?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>
<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
:
<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>
<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>
<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
5)-X 显示maven允许的debug信息
6)-U 强制去远程更新snapshot的插件或依赖,默认每天只更新一次