maven 配置篇 之 settings.xml

Posted on

maven 配置篇 之 settings.xml

maven2 比起maven1 来说,需要配置的文件少多了,主要集中在pom.xml和settings.xml中。
先来说说settings.xml,settings.xml对于maven来说相当于全局性的配置,用于所有的项目。在maven2中存在两个 settings.xml,一个位于maven2的安装目录conf下面,作为全局性配置。对于团队设置,保持一致的定义是关键,所以 maven2/conf下面的settings.xml就作为团队共同的配置文件。保证所有的团队成员都拥有相同的配置。当然对于每个成员,都需要特殊的 自定义设置,如用户信息,所以另外一个settings.xml就作为本地配置。默认的位置为:${user.dir} /.m2/settings.xml目录中(${user.dir} 指windows 中的用户目录)。
settings.xml基本结构如下:

xml 代码

  1. <settings xmlns="http://maven.apache.org/POM/4.0.0"
  2. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
  4. http://maven.apache.org/xsd/settings-1.0.0.xsd">

  5. 简单介绍一下几个主要的配置因素: localRepository:表示本地库的保存位置,也就是maven2主要的jar保存位置,默认在${user.dir}/.m2/repository,如果需要另外设置,就换成其他的路径。 offline:如果不想每次编译,都去查找远程中心库,那就设置为true。当然前提是你已经下载了必须的依赖包。 Servers 在POM中的 distributionManagement元素定义了开发库。然而,特定的username和pwd不能使用于pom.xml,所以通过此配置来保存server信息

xml 代码

  1. server001
  2. my_login
  3. my_password
  4. ${usr.home}/.ssh/id_dsa
  5. some_passphrase
  6. 664
  7. 775
  • id:server 的id,用于匹配distributionManagement库id,比较重要。
  • username, password:用于登陆此服务器的用户名和密码
  • privateKey, passphrase:设置private key,以及passphrase
  • filePermissions, directoryPermissions:当库文件或者目录创建后,需要使用权限进行访问。参照unix文件许可,如664和775 Mirrors 表示镜像库,指定库的镜像,用于增加其他库

xml 代码

  1. planetmirror.com
  2. PlanetMirror Australia
  3. http://downloads.planetmirror.com/pub/maven2
  4. central
  • id,name:唯一的标志,用于区别镜像
  • url:镜像的url
  • mirrorOf:此镜像指向的服务id Proxies 此设置,主要用于无法直接访问中心的库用户配置。

xml 代码

  1. myproxy
  2. true
  3. http
  4. proxy.somewhere.com
  5. 8080
  6. proxyuser
  7. somepassword
  8. /*.google.com|ibiblio.org
  • id:代理的标志
  • active:是否激活代理
  • protocol, host, port:protocol://host:port 代理
  • username, password:用户名和密码
  • nonProxyHosts: 不需要代理的host Profiles 类似于pom.xml中的profile元素,主要包括activation,repositories,pluginRepositories 和properties元素 刚开始接触的时候,可能会比较迷惑,其实这是maven2中比较强大的功能。从字面上来说,就是个性配置。 单独定义profile后,并不会生效,需要通过满足条件来激活。 repositories 和pluginRepositories 定义其他开发库和插件开发库。对于团队来说,肯定有自己的开发库。可以通过此配置来定义。 如下的配置,定义了本地开发库,用于release 发布。

xml 代码

  1. repo-local
  2. Internal 开发库
  3. http://192.168.0.2:8082/repo-local
  4. true
  5. never
  6. warn
  7. false
  8. default
  9. repo-local
  10. Internal 开发库
  11. http://192.168.0.2:8082/repo-local
  12. true
  13. never
  14. warn
  15. false
  16. default

  17. releases, snapshots:每个产品的版本的Release或者snapshot(注:release和snapshot的区别,release一般是比较稳定的版本,而snapshot基本上不稳定,只是作为快照) properties maven 的properties作为placeholder值,如ant的properties。 包括以下的5种类型值:

  18. env.X,返回当前的环境变量

  19. project.x:返回pom中定义的元素值,如project.version
  20. settings.x:返回settings.xml中定义的元素
  21. java 系统属性:所有经过java.lang.System.getProperties()返回的值
  22. x:用户自己设定的值 Activation 用于激活此profile

xml 代码

  1. false
  2. 1.5
  3. Windows XP
  4. Windows
  5. x86
  6. 5.1.2600
  7. mavenVersion
  8. 2.0.3
  9. ${basedir}/file2.properties
  10. ${basedir}/file1.properties
  • jdk:如果匹配指定的jdk版本,将会激活
  • os:操作系统
  • property:如果maven能检测到相应的属性
  • file: 用于判断文件是否存在或者不存在 除了使用activation来激活profile,同样可以通过activeProfiles来激活 Active Profiles 表示激活的profile,通过profile id来指定。

xml 代码

  1. env-test 指定的profile id

5个必须掌握的maven命令

Posted on

5个必须掌握的maven命令

  1. mvn help:describe 你是否因为记不清某个插件有哪些goal而痛苦过,你是否因为想不起某个goal有哪些参数而苦恼,那就试试这个命令吧,它会告诉你一切的. 参数: 1. -Dplugin=pluginName 2. -Dgoal(或-Dmojo)=goalName:与-Dplugin一起使用,它会列出某个插件的goal信息,如果嫌不够详细,同样可以加 -Ddetail.(注:一个插件goal也被认为是一个 “Mojo”) 下面大家就运行mvn help:describe -Dplugin=help -Dmojo=describe感受一下吧!

  2. mvn archetype:generate 你是怎么创建你的maven项目的?是不是像这样:mvn archetype:create -DarchetypeArtifactId=maven-archetype-quickstart -DgroupId=com.ryanote -Dartifact=common,如果你还再用的话,那你就out了,现代人都用mvn archetype:generate了,它将创建项目这件枯燥的事更加人性化,你再也不需要记那么多的archetypeArtifactId,你只需输入archetype:generate,剩下的就是做”选择题”了.

  3. mvn tomcat:run 用了maven后,你再也不需要用eclipse里的tomcat来运行web项目(实际工作中经常会发现用它会出现不同步更新的情况),只需在对应目录 (如/ryanote)里运行 mvn tomat:run命令,然后就可在浏览器里运行http://localhost:8080/ryanote查看了.如果你想要更多的定制,可以在 pom.xml文件里加下面配置: 01 02 03 04 org.codehaus.mojo 05 tomcat-maven-plugin 06 07 /web 08 9090 09 10 11 12 当然你也可以在命令里加参数来实现特定的功能,下面几个比较常用: 1. 跳过测试:-Dmaven.test.skip(=true) 2. 指定端口:-Dmaven.tomcat.port=9090 3. 忽略测试失败:-Dmaven.test.failure.ignore=true 当然,如果你的其它关联项目有过更新的话,一定要在项目根目录下运行mvn clean install来执行更新,再运行mvn tomcat:run使改动生效.

  4. mvnDebug tomcat:run 这条命令主要用来远程测试,它会监听远程测试用的8000端口,在eclipse里打开远程测试后,它就会跑起来了,设断点,调试,一切都是这么简单.上面提到的那几个参数在这里同样适用.

  5. mvn dependency:sources 故名思义,有了它,你就不用到处找源码了,运行一下,你项目里所依赖的jar包的源码就都有了 来源: [http://www.cnblogs.com/MyFavorite/archive/2012/03/18/2404330.html](http://www.cnblogs.com/MyFavorite/archive/2012/03/18/2404330.html)

Maven实战(三)Eclipse构建Maven项目

Posted on

Maven实战(三)Eclipse构建Maven项目

1. 安装m2eclipse插件 要用Eclipse构建Maven项目,我们需要先安装meeclipse插件 点击eclipse菜单栏Help->Eclipse Marketplace搜索到插件Maven Integration for Eclipse 并点击安装即可,如下图:

安装成成之后我们在Eclipse菜单栏中点击File->New->Other,在弹出的对话框中会看到如下图所示:

2. 构建Maven项目

  以eclipse3.6为例

  1)创建简单Maven项目

       点击Eclipse菜单栏File->New->Ohter->Maven得到如下图所示对话框:

选中Maven Project并点击Next,到下一个对话框继续点击Next得到如下对话框

如图示操作,选择maven-archetype-quickstart,点击Next

按图示填写好groupId, artfactId,version等信息,点击Finish。

由此我们成功创建了一个简单的Maven项目,项目结构如图所示

 2)创建Maven web项目

 操作跟创建简单Maven项目类似,点击Eclipse菜单File->New->Other->Maven->Maven Project

 在选择maven-archetype的界面进行如下操作:

点击Next,填写好相应的groupId,artifactId,version等信息,点击Finish

得到的Maven web项目结构如下图所示:

右击项目,点击Properties->Project Facets

如上图可以看到项目为web2.3 java1.5 当然我们也可以改成我们所需要的版本,打开xml文件my-app-web/.settings/org.eclipse.wst.common.project.facet.core.xml,进行修改即可: Xml代码 收藏代码

  1. <?xml version="1.0" encoding="UTF-8"?>
 3)导入Maven项目

      在Eclipse project explorer中右击,在弹出框中选择import,得到如下图所示:          

  选择Existing Maven Projects,并点击Next,得到如下图所示对话框:

选择一个已经创建好的Maven项目,并点击Finish。

由此,导入Maven项目成功

3. 运行Maven命令

右击项目,点击Run as,如下图:

即可看到有很多现有的maven命令,点击即可运行,并在控制台可以看到运行信息

如果你想运行的maven命令在这里没有找到,点击Maven build创建新的命令,操作如下图所示:

如下图填入Maven命令,点击Run即可

新增的maven命令可以通过如下方式找到,并再次运行:

来源: [http://www.iteye.com/topic/1123225](http://www.iteye.com/topic/1123225)

Maven实战(五)坐标详解

Posted on

Maven实战(五)坐标详解

1.为什么要定义Maven坐标 在我们开发Maven项目的时候,需要为其定义适当的坐标,这是Maven强制要求的。在这个基础上,其他Maven项目才能应用该项目生成的构件。 2.Maven坐标详解

 Maven坐标为各种构件引入了秩序,任何一个构件都必须明确定义自己的坐标,而一组Maven坐标是通过一些元素定义的,它们是groupId,artifactId,version,packaging,class-sifer。下面是一组坐标定义:

Xml代码 收藏代码

  1. com.mycompany.app
  2. my-app
  3. jar
  4. 0.0.1-SNAPSHOT

    下面讲解一下各个坐标元素:

groupId :定义当前Maven项目隶属的实际项目。首先,Maven项目和实际项目不一定是一对一的关系。比如SpringFrameWork这一实际项目,其对应的Maven项目会有很多,如spring-core,spring-context等。这是由于Maven中模块的概念,因此,一个实际项目往往会被划分成很多模块。其次,groupId不应该对应项目隶属的组织或公司。原因很简单,一个组织下会有很多实际项目,如果groupId只定义到组织级别,而后面我们会看到,artifactId只能定义Maven项目(模块),那么实际项目这个层次将难以定义。最后,groupId的表示方式与Java包名的表达方式类似,通常与域名反向一一对应。

artifactId : 该元素定义当前实际项目中的一个Maven项目(模块),推荐的做法是使用实际项目名称作为artifactId的前缀。比如上例中的my-app。

version : 该元素定义Maven项目当前的版本

packaging :定义Maven项目打包的方式,首先,打包方式通常与所生成构件的文件扩展名对应,如上例中的packaging为jar,最终的文件名为my-app-0.0.1-SNAPSHOT.jar。也可以打包成war, ear等。当不定义packaging的时候,Maven 会使用默认值jar

classifier: 该元素用来帮助定义构建输出的一些附件。附属构件与主构件对应,如上例中的主构件为my-app-0.0.1-SNAPSHOT.jar,该项目可能还会通过一些插件生成如my-app-0.0.1-SNAPSHOT-javadoc.jar,my-app-0.0.1-SNAPSHOT-sources.jar, 这样附属构件也就拥有了自己唯一的坐标 来源: [http://tangyanbo.iteye.com/blog/1503946](http://tangyanbo.iteye.com/blog/1503946)

Maven实战(二)构建简单Maven项目

Posted on

Maven实战(二)构建简单Maven项目

上一节讲了maven的安装和配置,这一节我们来学习一下创建一个简单的Maven项目

  1. 用Maven 命令创建一个简单的Maven项目

在cmd中运行如下命令: C代码 收藏代码

  1. mvn archetype:generate
  2. -DgroupId=com.mycompany.app
  3. -DartifactId=my-app-simple
  4. -Dversion=1.0
  5. -DarchetypeArtifactId=maven-archetype-quickstart

    即可在当前目录创建一个简单的maven项目,当然创建的时候会从Maven库中下载相关的依赖,耐心等待即可。

maven的大致结构如下: Java代码 收藏代码

  1. my-app
  2. |-- pom.xml
  3. `-- src
  4. |-- main
  5. | |-- java
  6. | | `-- com
  7. | | `-- mycompany
  8. | | `-- app
  9. | | `-- App.java
  10. | `-- resources
  11. | `-- META-INF
  12. | `-- application.properties
  13. `-- test
  14. `-- java
  15. `-- com
  16. `-- mycompany
  17. `-- app
  18. `-- AppTest.java

src/main/java : java源文件存放位置

src/main/resource : resource资源,如配置文件等

src/test/java : 测试代码源文件存放位置

2.简单POM.xml

打开项目即可看到pom.xml Xml代码 收藏代码

  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  2. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  3. 4.0.0
  4. com.mycompany.app
  5. my-app-simple
  6. jar
  7. 1.0
  8. my-app-simple
  9. http://maven.apache.org
  10. junit
  11. junit
  12. 3.8.1
  13. test
  14. 这段代码中最重要的是包含groupId, artifactId 和 version 的三行。这三个元素定义了一个项目基本的坐标


groupId 定义了项目属于哪个组,这个组往往和项目所在的组织或公司存在关联。譬如在googlecode上建立了一个名为myapp的项目,那么groupId就应该是com.googlecode.myapp

artifactId 定义了当前Maven项目在组织中唯一的ID, 可以理解为项目中的模块, 模块为Maven中最小单位构件


version 项目的版本

3.运行简单Maven命令

我们已经创建了最简单的Maven项目,下面我们来执行一些简单的构建命令

编译: compile

在cmd中,将目录切换到my-app-simple下,执行mvn clean compile

build success之后我们会在my-app-simple下看到新增了一个target目录,该目录下存放项目编译后的文件,如.class文件

清理: clean

cmd目录my-app-simple下执行命令 mvn clean

会将target文件删除,即清理项目,该命令可以结合其他命令运行

测试: test

cmd目录my-app-simple下执行命令 mvn test

会执行src/test/java 下的Junit 测试代码

当然在执行测试之前会自动执行编译命令,运行结果如下图:

打包: package

cmd目录my-app-simple下执行命令 mvn package

会将项目打成jar包,并放在target目录中

执行此命令之前会先执行编译和测试命令

安装:install

cmd目录my-app-simple下执行命令 mvn install

会将项目jar包安装到本地仓库中,以便其他项目使用

执行此命令之前会先执行编译,测试,打包命令 来源: [http://tangyanbo.iteye.com/blog/1503489](http://tangyanbo.iteye.com/blog/1503489)