下面所讲的大部分是命令行下操作。目前已经有很好用的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变量。
具体的设置过程如下:
- 在个人文件夹(一般是c:/documents and settings/username)中检查是否有.m2文件夹。如不存在,则在控制台中mvn install。
-
打开eclipse,选择windows--> preference --> Java --> buildpath --> Classpath Variables, 然后在右面的窗口中点击new新创建路径,路径名为M2_REPO,路径为c:/documents and settings/username/.m2/repository.个人的M2_REPO路径可以在
里设置。
使用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创建的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
|
也可以直接使用下面的命令一步完成:
如何向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配置,文件放置在自己电脑上的
目录下
<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:
<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:
<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:
<layout>
default
</layout>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
<activeProfiles>
<activeProfile>yeepay3g</activeProfile>
<activeProfile>develop</activeProfile>
</activeProfiles>
</settings>
|
这个settings.xml,还不能满足向公司maven仓库服务器发布jar包的功能。待完全设置好后,会给大家提供新的配置文件!