一、安装
必须先要安装JDK
set JAVA_HOME=D:\Java\jdk\jdk1.7.0
set path=%JAVA_HOME%\bin;%path%
http://maven.apache.org/
set M2_HOME=D:\Java\server\apache-maven-3.0.5
set path=%M2_HOME%\bin;%path%
检测是否安装成功
echo %JAVA_HOME%
java -version
echo %M2_HOME%
mvn -v
二、配置
最佳实践
copy %M2_HOME%/conf/settings.xml ~/.m2/settings.xml
修改localRepository位置,默认在~/.m2/repository
%M2_HOME%/conf/settings.xml
<!-- localRepository
| The path to the local repository maven will use to store artifacts.
|
| Default: ~/.m2/repository
<localRepository>/path/to/local/repo</localRepository>
-->
三、一般命令
mvn help:system 时间比较长
mvn help:effective-pom 查看有效的pom
四、开始建立项目
建立Java Project
mvn archetype:generate -DgroupId=com.company.project -DartifactId=module -DarchetypeArtifactId=maven-archetype-quickstart
建立Web Project
mvn archetype:generate -DgroupId=com.company.project -DartifactId=web -DarchtypeArtifactId=maven-archetype-webapp
裸建项目,需选择
mvn archetype:generate
mvn archetype:generate -DarchetypeCatalog=internal 这样比较快些
转换成Eclipse工程
mvn eclipse:eclipse
觉得不爽就安装eclipse插件后再用视窗来建立吧
五、Eclipse 插件
gef(必须) http://download.eclipse.org/tools/gef/updates/releases/
m2eclipse http://m2eclipse.sonatype.org/sites/m2e/
svn集成(增强) http://m2eclipse.sonatype.org/sites/m2e-extras/
安装时注意,如果不能装的可先不装
安装好后eclipse 在首选项中换meven位置
六、又一批常用的命令
mvn clean compile;
mvn clean test;
mvn javadoc:javadoc;
mvn clean package;
mvn clean install; 安装到本地
mvn clean deploy; 安装到私服或中心库
依赖相关的命令
mvn dependency:analyze
mvn dependency:list
mvn dependency:tree
七、项目结构
父项目,子项目,Web项目分开。
这个一定要学会,注意到生成的web项目中是没有src/main的,为什么,是因为鼓励建立模块
例如一个项目,core是一模块,service是一模块,web是一模块,desktop是一模块, web和desktop共用core和service
再看看spring的包就明白了
建立父子项目
cd /d d:/java/workspace
mvn archetype:create -DgroupId=com.company.project -DartifactId=project-parent
修改pom.xml中<packaging>jar</packaging>为<packaging>pom</packaging>,删除src
cd project-parent
创建jar项目
mvn archetype:create -DgroupId=com.company.project -DartifactId=p-service -Dpackage=com.ebiz.project.service -DarchetypeArtifactId=maven-archetype-quickstart
创建web项目
mvn archetype:create -DgroupId=com.company.project -DartifactId=p-web -Dpackage=com.ebiz.project.web -DarchetypeArtifactId=maven-archetype-webapp
打开pom.xml,已经加上了以下部分
<modules>
<module>p-service</module>
<module>p-web</module>
</modules>
转为eclipse项目
mvn eclipse:eclipse
想在web项目中有src/main和src/test也很简单,打开.classpath,手动加上
<classpathentry kind="src" output="target/classes" path="src/main/java"/>
<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources"/>
<classpathentry kind="src" output="target/test-classes" path="src/test/java"/>
<classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources"/>
八、仓库
.m2 -> 私服 -> 中央仓库(或私服)
九、资源
http://search.maven.org/ 即使不用maven,也是查找jar包的好去处
http://juvenshun.iteye.com/ 《Maven实战》
十、私服
http://www.sonatype.org/nexus/
下载解压后cd过去
nexus console 运行
nexus install 安装为windows服务
net start|stop nexus 手动启动|停止服务
最佳实践
配置一个hosts(c:\windows\system32\drivers\etc\hosts)
ip of nexus service nexus
这样私服换了只要改hosts即可任意切换
通过http://nexus:8081/nexus访问
admin/admin123进入,如果在外网,修改一下密码
Repositories/Central/Configuration/Download Remote Indexes->true
~/.m2/settings.xml配置
<server>
<id>releases</id>
<username>admin</username>
<password>admin123456</password>
</server>
<server>
<id>snapshots</id>
<username>admin</username>
<password>admin123456</password>
</server>
<profile>
<id>nexus</id>
<repositories>
<repository>
<id>public</id>
<name>local private nexus</name>
<url>http://nexus:8081/nexus/content/groups/public</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<repository>
<id>public-snapshots</id>
<name>local private nexus</name>
<url>http://nexus:8081/nexus/content/groups/public-snapshots</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>plugin-public</id>
<name>local private nexus</name>
<url>http://nexus:8081/nexus/content/groups/public</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
<pluginRepository>
<id>plugin-public-snapshots</id>
<name>local private nexus</name>
<url>http://nexus:8081/nexus/content/groups/public-snapshots</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
<activeProfiles>
<activeProfile>nexus</activeProfile>
</activeProfiles>
十一、插件,一切可以插件
http://search.maven.org/搜索一下g:"org.apache.maven.plugins"官方的就有59个之多
只有想不到的,没有做不到的。想要什么google吧。
十二、maven与tomcat
maven-tomcat-plugin让maven与tomcat配合得很好。它可以把应用部署到Tomcat服务器,也可以把tomcat作为内嵌服务器启动,就像jetty一样。
使用JPDA启动tomcat的远程调试功能。这样就能与eclipse配合起来,轻松地实现调试。而且具有tomcat的热部署功能。
具体做法如下:
1 在pom.xml文件中配置maven-tomcat-plugin插件。
Xml代码
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>tomcat-maven-plugin</artifactId>
</plugin>
2 配置环境变量MAVEN_OPTS,启动调试功能。
写道
MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,address=1044,server=y,suspend=n
3 在eclipse中配置远程调试
MAVEN命令:mvn tomcat:run
参考:这个是重点
http://mojo.codehaus.org/tomcat-maven-plugin/introduction.html
上面的配置是把tomcat作为内嵌服务器使用。
如果把tomcat作为外部服务器,还需要做如下配置。
1 修改startup.bat
修改call "%EXECUTABLE%" jpda start %CMD_LINE_ARGS%
2 修改catalina.bat
修改set JPDA_TRANSPORT=dt_socket
修改set JPDA_ADDRESS=1045
3 修改tomcat-users.xml
如果没有,则加入<role rolename="manager"/>
加入,<user username="admin" password="" roles="manager"/>
maven默认使用admin密码为空登录tomcat管理控制台。
十三、包依赖的scope
* compile,缺省值,适用于所有阶段,会随着项目一起发布。
* provided,类似compile,期望JDK、容器或使用者会提供这个依赖。如servlet.jar。
* runtime,只在运行时使用,如JDBC驱动,适用运行和测试阶段。
* test,只在测试时使用,用于编译和运行测试代码。不会随项目发布。
* system,类似provided,需要显式提供包含依赖的jar,Maven不会在Repository中查找它。
对于system,
* 可以在本地配置绝对路径,
* 如果是web项目最好放在lib目录,然后<systemPath>${project.basedir}/src/main/webapp/WEB-INF/lib/xxx.jar</systemPath>
<dependency>
<groupId>org.apache.tools</groupId>
<artifactId>zip</artifactId>
<version>1.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/src/main/webapp/WEB-INF/lib/apache-ant-zip.jar</systemPath>
</dependency>
* 可以发布到本地私服,推荐第二种
包依赖优化原则
尽量少,不引用不用的包
test > provided > runtime > compile
利用插件查看依赖
十四、doploy注意事项
1.release 库要允许 redoploy
2.启用cental库
3.deploy时如果有父项目一定要deploy父项目,不然会有问题
cd /d D:\Java\workspace\maven\ssm\ssm-core
mvn deploy:deploy-file -DgroupId=cn.kimsoft -DartifactId=ssm-core -Dversion=1.1.1 -Dpackaging=jar -Dfile=target/ssm-core-1.1.1.jar -Durl=http://localhost:8081/nexus/content/repositories/central/ -DrepositoryId=nexus
mvn deploy:deploy-file -Dfile=target/ssm-core-1.1.1.jar -Durl=http://127.0.0.1:8081/nexus/content/repositories/releases/ -DrepositoryId=nexus-release