maven

来源:互联网 发布:mac os x 原版dmg 编辑:程序博客网 时间:2024/06/07 15:34

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

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

关于Maven的一些网络资源

  • Maven的官方网站:http://maven.apache.org
  • 互联网上的maven仓库服务:http://www.mavenregistry.com/
  • 公司maven私服:http://172.17.102.106:8080/nexus
  • IBM DeveloperWorks:项目管理:Maven让事情变得简单
  • IBM DeveloperWorks:在Eclipse中利用Maven
  • 国内maven达人的博客:http://juvenshun.iteye.com/

通过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
mvnpackage
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包的功能。待完全设置好后,会给大家提供新的配置文件!

0 0