maven

 下面所讲的大部分是命令行下操作。目前已经有很好用的eclipse插件m2eclipse(updateUrl: http://m2eclipse.sonatype.org/sites/m2e)。

在开发过程中遇到maven使用上的问题(或对问题的解答),请写在后面的comment里, 之后我们补充到文档中或整理出一个FAQ

关于Maven的一些网络资源

通过Maven创建项目

创建普通Java项目:

mvn org.apache.maven.plugins:maven-archetype-plugin: 2.2 :create -DgroupId=com.yeepay.package_name -DartifactId=ProjectName

创建Web项目:

mvn archetype:create -DgroupId=com.yeepay.package_name -DartifactId=ProjectName -DarchetypeArtifactId=maven-archetype-webapp

生成Eclipse项目文件:

mvn eclipse:eclipse
mvn org.apache.maven.plugins:maven-eclipse-plugin: 2.8 :eclipse

使用Eclipse打开Maven管理的项目前,必须在Eclipse中设置正确的M2_REPO变量。

具体的设置过程如下:

  1. 在个人文件夹(一般是c:/documents and settings/username)中检查是否有.m2文件夹。如不存在,则在控制台中mvn install。
  2. 打开eclipse,选择windows--> preference --> Java  --> buildpath --> Classpath Variables, 然后在右面的窗口中点击new新创建路径,路径名为M2_REPO,路径为c:/documents and settings/username/.m2/repository.个人的M2_REPO路径可以在

    ${HOME}/.m2/settings.xml

    里设置。

使用maven构建eclipse WTP的Web应用工程

在pom中加入如下插件配置:

?<build>
        <plugins>
 
                         <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-eclipse-plugin</artifactId>
                 <configuration>
                     <projectNameTemplate>[artifactId]-[version]</projectNameTemplate>
                     <wtpmanifest> true </wtpmanifest>
                     <wtpapplicationxml> true </wtpapplicationxml>
                     <wtpversion> 2.0 </wtpversion>
                     <manifest>${basedir}/src/main/resources/META-INF/MANIFEST.MF</manifest>
                 </configuration>
             </plugin>
        </plugins>
</build>

然后进入到工程目录下,执行 mvn eclipse:eclipse,即可构造为eclipse WTP工程。

之后在eclipse里导入,与在eclipse下新建的动态Web应用工程一样------可以在eclipse下部署、调试。

使 用Maven和MyEclipse的Web项目集成

通过maven创建的webapp项目和MyEclipse集成不好,需要按照以下步骤修改:

首先编辑pom.xml,在build/plugins中加入下列内容:

<plugin>
     <groupId>org.apache.maven.plugins</groupId>
     <artifactId>maven-eclipse-plugin</artifactId>
     <configuration>
         <projectnatures>
             <java.lang.String>
                 com.genuitec.eclipse.j2eedt.core.webnature
             </java.lang.String>
             <!-- e.g., also <java.lang.String>com.genuitec.eclipse.cross.easystruts.eclipse.easystrutsnature</java.lang.String> -->
             <java.lang.String>
                 org.eclipse.jdt.core.javanature
             </java.lang.String>
         </projectnatures>
         <outputDirectory>
             src/main/webapp/WEB-INF/classes
         </outputDirectory>
     </configuration>
</plugin>

使用下面的命令重新生成eclipse项目:

mvn eclipse:clean
mvn eclipse:eclipse

使用MyEclipse导入这个Eclipse项目,并关闭。这时项目目录下会有.mymetadata文件。编辑这个文件,修改成类似下面的内容:

<?xml version= "1.0" encoding= "UTF-8" ?>
<project-module
   type= "WEB"
   name= "ProjectName"
   id= "myeclipse.xxxxxxxxx"
   context-root= "/webapp-name" <----- 这里设置安装的URL路径。
   j2ee-spec= "1.4"
   archive= "ProjectName.war" >
   <attributes>
     <attribute name= "webrootdir" value= "/src/main/webapp" /> <----- 这里设置webrootdir,设置为maven自动生成的/src/main/webapp。
   </attributes>
</project-module>

最后,在MyEclipse中重新打开这个项目,就可以使用MyEclipse的deploy功能了。

Maven的一些常用Phase

Maven通过目标来决定执行什么样的操作。下面是一些常用的目标:

  • compile
  • test
  • package
  • install

项目依赖

如果被Maven管理的项目依赖其他项目,则编译项目前必须编译、测试、打包和安装被依赖的项目。可以使用下面的指令:

mvn compile
mvn test
mvn package
mvn install

也可以直接使用下面的命令一步完成:

?mvn install

如何向Maven库里加入jar

?mvn install:install-file -Dfile=-DgroupId=
-DartifactId=-Dversion=-Dpackaging=-DgeneratePom= true

(警告) 这里的安装,只是把jar包安装在本地创建,即M2_REPO下,如果有需要的jar包在公司的maven仓库服务器上没有,应该上传到公司的maven仓库服务器上,而不是仅安装在本地仓库。

忽略测试的打包或部署
打包:mvn clean package -Dmaven.test.skip=true
部署:mvn clean install -Dmaven.test.skip=true
 在打包(package)或安装(install) 之前加个clean,是因为clean和package及install不在同一个Lifecycle,因此在执行package或install时,不会执行clean

maven 打包与部署的区别

package将结果放于和src目录并列的target目录下。
install将结果(.jar等)放到本地的maven仓库下,即M2_REPO目录下。

在Eclipse中调试 maven项目

使用maven的一个方便之处是可以使用Jetty Plugin来运行web项目。只要maven jetty:run就可以把web项目跑起来了。只是很多时候我们都需要在IDE中进行调试。那如何在Eclipse中调试使用jetty Plugin的web项目呢?

下面我们就来配置一下。

1、首先在Run→Externel Tools→Open Externel Tools Dialog.. 打开配置对话框,选中左边的Program节点,右键选择New然后再右边的配置里面输入Name信息,在Main tab下的Location选择你maven可执行文件的全路径(eg:/home/rory/apps/apache-maven-2.0.8/bin /mvn),Working Directory选择你的maven项目(eg:

${workspace_loc:/guice-example}

),Arguments里输入 jetty:run。然后再切换到Environment tab。New 一下变量,name是 MAVEN_OPTS

value是 -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=4000,server=y,suspend=y

ok,这一步设置完毕,Apply一下,close关闭

2、接下来添加一个Debug,打开Run→Open Debug Dialog..打开Debug Dialog窗口,选中左边的Remote Java Application,右键New输入name,Project里选中要Debug的项目Connection Properties里的Host里设置成localhost,Port设置成上面配置的4000然后Apply一下就ok了。

3、接下来就可以开始调试了。首先启动第一步配置的Externel Tools配置,然后再运行第二步配置的Debug.就可以看到控制台有mvn jetty:run的输出了。接下来就开如Debug你的项目吧。

 公司内部开发人员使用的settings.xml配置

下面是公司内部开发人员使用的settings.xml配置,文件放置在自己电脑上的

${HOME}/.m2/

目录下

<settings>
     <localRepository>根据自己的目录进行设置</localRepository>
     <interactiveMode> true </interactiveMode>
     <offline> false </offline>
     <pluginGroups>
         <pluginGroup>org.mortbay.jetty</pluginGroup>
     </pluginGroups>
     <servers>
         <server>
             <id>YeepayReleases</id>
             <username>用户名</username>
             <password>密码</password>
             <filePermissions> 664 </filePermissions>
             <directoryPermissions> 775 </directoryPermissions>
             <configuration></configuration>
         </server>
         <server>
             <id>YeepaySnapshots</id>
             <username>用户名</username>
             <password>密码</password>
             <filePermissions> 664 </filePermissions>
             <directoryPermissions> 775 </directoryPermissions>
             <configuration></configuration>
         </server>
         <server>
             <id>YeepayServer</id>
             <username>用户名</username>
             <password>密码</password>
             <filePermissions> 664 </filePermissions>
             <directoryPermissions> 775 </directoryPermissions>
             <configuration></configuration>
         </server>
         <server>
             <id>YeepayPlugin</id>
             <username>用户名</username>
             <password>密码</password>
             <filePermissions> 664 </filePermissions>
             <directoryPermissions> 775 </directoryPermissions>
             <configuration></configuration>
         </server>
     </servers>
     <mirrors>
         <mirror>
           <id>yeepay-repository</id>
           <name>Maven Repository Manager running on YeePay</name>
           <url>http: //172.17.102.106:8080/nexus/content/groups/public/</url>
           <mirrorOf>external:*</mirrorOf>
         </mirror>
     </mirrors>
     <profiles>
         <profile>
             <id>yeepay3g</id>
             <activation>
                 <activeByDefault> false </activeByDefault>
                 <jdk> 1.6 </jdk>
             </activation>
 
             <repositories>
                 <repository>
                   <id>YeepayServer</id>
                   <name>YeePay Server</name>
                   <releases>
                     <enabled> true </enabled>
                     <updatePolicy>always</updatePolicy>
                     <checksumPolicy>warn</checksumPolicy>
                   </releases>
                   <snapshots>
                     <enabled> true </enabled>
                     <updatePolicy>always</updatePolicy>
                     <checksumPolicy>fail</checksumPolicy>
                   </snapshots>
                   <url>http: //172.17.102.106:8080/nexus/content/groups/public/</url>
                   <layout> default </layout>
                 </repository>
             </repositories>
             <pluginRepositories>
                 <pluginRepository>
                   <id>YeepayPlugin</id>
                   <name>YeePay Plugin</name>
                   <releases>
                     <enabled> true </enabled>
                     <updatePolicy>always</updatePolicy>
                     <checksumPolicy>warn</checksumPolicy>
                   </releases>
                   <snapshots>
                     <enabled> true </enabled>
                     <updatePolicy>always</updatePolicy>
                     <checksumPolicy>fail</checksumPolicy>
                   </snapshots>
                   <url>http: //172.17.102.106:8080/nexus/content/groups/public/</url>
                   <layout> default </layout>
                 </pluginRepository>
             </pluginRepositories>
         </profile>
     </profiles>
     <activeProfiles>
         <activeProfile>yeepay3g</activeProfile>
         <activeProfile>develop</activeProfile>
     </activeProfiles>
</settings>

(警告) 这个settings.xml,还不能满足向公司maven仓库服务器发布jar包的功能。待完全设置好后,会给大家提供新的配置文件!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值