Maven 速成

Maven是什么,要了解一下。


一、安装
必须先要安装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

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值