﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-闲人野居-随笔分类-配置管理</title><link>http://www.blogjava.net/zyl/category/17751.html</link><description>好好学习，天天向上</description><language>zh-cn</language><lastBuildDate>Tue, 27 Feb 2007 20:12:41 GMT</lastBuildDate><pubDate>Tue, 27 Feb 2007 20:12:41 GMT</pubDate><ttl>60</ttl><item><title>maven2 建立统一的管理站点</title><link>http://www.blogjava.net/zyl/archive/2007/01/31/97059.html</link><dc:creator>布衣郎</dc:creator><author>布衣郎</author><pubDate>Wed, 31 Jan 2007 12:22:00 GMT</pubDate><guid>http://www.blogjava.net/zyl/archive/2007/01/31/97059.html</guid><wfw:comment>http://www.blogjava.net/zyl/comments/97059.html</wfw:comment><comments>http://www.blogjava.net/zyl/archive/2007/01/31/97059.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zyl/comments/commentRss/97059.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zyl/services/trackbacks/97059.html</trackback:ping><description><![CDATA[    使用maven2的另外一个好处，就是有了统一的入口，用于察看项目的进展情况。这主要包括了项目的介绍，成员介绍，以及相关的项目的文档，当然也包括项目的所有进展报表。<br />    下面，通过实例来介绍如何配置maven，来产生项目站点。<br />    首先创建相关的site <br />mvn archetype:create \<br />      -DarchetypeGroupId=org.apache.maven.archetypes \<br />      -DarchetypeArtifactId=maven-archetype-site \<br />      -DgroupId=com.mycompany.app \<br />     -DartifactId=my-app-site<br />  你会看到如下的目录：<br />my-app-site<br />|-- pom.xml<br />`-- src<br />    `-- site<br />        |-- apt<br />        |   |-- format.apt<br />        |   `-- index.apt<br />        |-- fml<br />        |   `-- faq.fml<br />        |-- fr<br />        |   |-- apt<br />        |   |   |-- format.apt<br />        |   |   `-- index.apt<br />        |   |-- fml<br />        |   |   `-- faq.fml<br />        |   `-- xdoc<br />        |       `-- xdoc.xml<br />        |-- xdoc<br />        |   `-- xdoc.xml<br />        |-- site.xml<br />        `-- site_fr.xml<br />    当然也可以不用通过此来生成站点，直接在原有的src目录中增加site目录就行。当然，为了简化操作，一般先生成相应的site目录，然后拷贝到相应的src目录中。<br />修改pom文件<br />增加以下内容<br />        &lt;!-- 配置发布站点url --&gt;<br />           &lt;distributionManagement&gt;<br />                 &lt;site&gt;<br />                   &lt;id&gt;website&lt;/id&gt;<br />                   &lt;url&gt;scp://webhost.company.com/www/website&lt;/url&gt;<br />              &lt;/site&gt;<br />           &lt;/distributionManagement&gt;<br />           &lt;build&gt;<br />              &lt;plugins&gt;<br />           &lt;!-- 配置site 的国际化，默认为en,fr，更改为zh_CN，以及设置编码格式，默认utf-8 --&gt;<br />              &lt;plugin&gt;<br />                 &lt;artifactId&gt;maven-site-plugin&lt;/artifactId&gt;<br />                &lt;configuration&gt;<br />                    &lt;locales&gt;zh_CN&lt;/locales&gt;<br />                    &lt;outputEncoding&gt;GBK&lt;/outputEncoding&gt;<br />                    &lt;/configuration&gt;<br />                  &lt;/plugin&gt;<br />             &lt;/plugins&gt;<br />          &lt;/build&gt;<br /><br />在site 目录下，最重要的就是site.xml文件了<br />site.xml描述了主要的site布局，例子如下：<br />&lt;?xml version="1.0" encoding="ISO-8859-1"?&gt;<br />&lt;project name="Maven"&gt;<br />  &lt;!-- left banner--&gt;<br />  &lt;bannerLeft&gt;<br />    &lt;name&gt;Maven&lt;/name&gt;<br />    &lt;src&gt;http://maven.apache.org/images/apache-maven-project.png&lt;/src&gt;<br />    &lt;href&gt;http://maven.apache.org/&lt;/href&gt;<br />  &lt;/bannerLeft&gt;<br />  &lt;!-- right banner--&gt;<br />  &lt;bannerRight&gt;<br />    &lt;src&gt;http://maven.apache.org/images/maven-small.gif&lt;/src&gt;<br />  &lt;/bannerRight&gt;<br />  &lt;body&gt;<br />    &lt;!-- 默认的link --&gt;<br />    &lt;links&gt;<br />      &lt;item name="Apache" href="http://www.apache.org/" /&gt;<br />      &lt;item name="Maven 1.0" href="http://maven.apache.org/"/&gt;<br />      &lt;item name="Maven 2" href="http://maven.apache.org/maven2/"/&gt;<br />    &lt;/links&gt;<br />   &lt;!-- 菜单项 --&gt;<br />    &lt;menu name="Maven 2.0"&gt;<br />      &lt;item name="Introduction" href="index.html"/&gt;<br />      &lt;item name="Download" href="download.html"/&gt;<br />      &lt;item name="Release Notes" href="release-notes.html" /&gt;<br />      &lt;item name="General Information" href="about.html"/&gt;<br />      &lt;item name="For Maven 1.0 Users" href="maven1.html"/&gt;<br />      &lt;item name="Road Map" href="roadmap.html" /&gt;<br />    &lt;/menu&gt;<br />    &lt;menu ref="reports" /&gt;<br />    ...<br />  &lt;/body&gt;<br />&lt;/project&gt;<br /><br />配置站点文件<br />maven 支持以下的文档：<br />xdoc格式，使用简单的xml格式<br />apt格式，like wiki格式的纯文本<br />fml格式， faq格式<br />docBook<br />一般采用apt文件，默认的apt都是iso-8859-1的，如果需要支持中文，需要使用native2ascii命令来转换。<br /><br />报表：<br />站点主要的配置，目前不错的报表插件，包括javadoc,pmd,checkstyle,Surefire test,source xref，tag list等。<br />下面详细介绍这些报表：<br />javadoc，对于团队内部来说，javadoc是比较重要的，当然前提是能好好的写javadoc。<br />配置如下：在reporting中增加如下的插件<br /><br />      &lt;plugin&gt;<br />        &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;<br />        &lt;artifactId&gt;maven-javadoc-plugin&lt;/artifactId&gt;<br />        &lt;configuration&gt;<br />          &lt;links&gt;<br />            &lt;link&gt;http://java.sun.com/j2se/1.4.2/docs/api&lt;/link&gt;<br />            &lt;link&gt;http://plexus.codehaus.org/ref/1.0-alpha-9/apidocs&lt;/link&gt;<br />          &lt;/links&gt;<br />          &lt;aggregate&gt;true&lt;/aggregate&gt;<br />        &lt;/configuration&gt;<br />      &lt;/plugin&gt;<br /><br />pmd，一个不错的代码检查工具。<br />      &lt;plugin&gt;<br />        &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;<br />        &lt;artifactId&gt;maven-pmd-plugin&lt;/artifactId&gt;<br />        &lt;configuration&gt;<br />          &lt;rulesets&gt;<br />            &lt;ruleset&gt;/rulesets/basic.xml&lt;/ruleset&gt;<br />            &lt;ruleset&gt;/rulesets/imports.xml&lt;/ruleset&gt;<br />            &lt;ruleset&gt;/rulesets/unusedcode.xml&lt;/ruleset&gt;<br />            &lt;ruleset&gt;/rulesets/finalizers.xml&lt;/ruleset&gt;<br />            &lt;ruleset&gt;/rulesets/controversial.xml&lt;/ruleset&gt;<br />            &lt;ruleset&gt;/rulesets/strings.xml&lt;/ruleset&gt;<br />            &lt;ruleset&gt;/rulesets/strictexception.xml&lt;/ruleset&gt;<br />            &lt;ruleset&gt;/rulesets/optimizations.xml&lt;/ruleset&gt;<br />            &lt;ruleset&gt;/rulesets/naming.xml&lt;/ruleset&gt;<br />          &lt;/rulesets&gt;<br />          &lt;linkXref&gt;true&lt;/linkXref&gt;<br />          &lt;sourceEncoding&gt;GBK&lt;/sourceEncoding&gt;<br />          &lt;minimumTokens&gt;100&lt;/minimumTokens&gt;<br />          &lt;!--支持jdk 1.5 --&gt;<br />          &lt;targetJdk&gt;1.5&lt;/targetJdk&gt;<br />        &lt;/configuration&gt;<br />      &lt;/plugin&gt;<br /><br />checkstyle,主要的代码格式工具,和pmd相比，更注重代码的格式。<br />      &lt;plugin&gt;<br />        &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;<br />        &lt;artifactId&gt;maven-checkstyle-plugin&lt;/artifactId&gt;<br />        &lt;configuration&gt;<br />          &lt;configLocation&gt;sun_checks.xml&lt;/configLocation&gt;<br />        &lt;/configuration&gt;<br />      &lt;/plugin&gt;<br /><br />Surefire test，单元测试结果报表<br />      &lt;plugin&gt;<br />        &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;<br />        &lt;artifactId&gt;maven-surefire-report-plugin&lt;/artifactId&gt;<br />      &lt;/plugin&gt;<br /><br />source xref,在网站上直接察看java源代码<br /><br />     &lt;plugin&gt;<br />        &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;<br />        &lt;artifactId&gt;maven-jxr-plugin&lt;/artifactId&gt;<br />      &lt;/plugin&gt;<br /><br />tag list，用于查找在代码中预定义的标签，如todo<br />     &lt;plugin&gt;<br />        &lt;groupId&gt;org.codehaus.mojo&lt;/groupId&gt;<br />        &lt;artifactId&gt;taglist-maven-plugin&lt;/artifactId&gt;<br />        &lt;configuration&gt;<br />          &lt;tags&gt;<br />            &lt;tag&gt;TODO&lt;/tag&gt;<br />            &lt;tag&gt;@todo&lt;/tag&gt;<br />            &lt;tag&gt;FIXME&lt;/tag&gt;<br />          &lt;/tags&gt;<br />        &lt;/configuration&gt;<br />      &lt;/plugin&gt;<br /><br />基本的站点已经成型了，下面就是生成了。<br />执行mvn site 生成目录，或者直接执行 mvn site-deploy 发布站点<img src ="http://www.blogjava.net/zyl/aggbug/97059.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zyl/" target="_blank">布衣郎</a> 2007-01-31 20:22 <a href="http://www.blogjava.net/zyl/archive/2007/01/31/97059.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用maven2 进行团队配置</title><link>http://www.blogjava.net/zyl/archive/2007/01/07/92256.html</link><dc:creator>布衣郎</dc:creator><author>布衣郎</author><pubDate>Sun, 07 Jan 2007 11:41:00 GMT</pubDate><guid>http://www.blogjava.net/zyl/archive/2007/01/07/92256.html</guid><wfw:comment>http://www.blogjava.net/zyl/comments/92256.html</wfw:comment><comments>http://www.blogjava.net/zyl/archive/2007/01/07/92256.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/zyl/comments/commentRss/92256.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zyl/services/trackbacks/92256.html</trackback:ping><description><![CDATA[    对于团队来说，建立统一的开发环境是必须的，而maven能很好帮助建立统一的环境。下面就介绍如何更有效的进行统一的配置。<br />准备工作：<br />   下载必须的软件：<br />maven2: http://maven.apache.org/download.html 最主要的<br />maven-proxy：用来代理repository，使用代理来访问多个远程库<br />            http://maven-proxy.codehaus.org/<br />continuum：一个不错的持续整合工具，用于自动build。支持ant,maven<br />http://maven.apache.org/continuum/<br />svn:版本控制工具<br /><br /><b>创建一致的开发环境</b><br />   <br />    在共享的开发环境中，更好的建议是保持maven的两个不同的配置文件分别管理，包括共享和用户自定义设置。共同的配置包括在安装目录中，而单独的开发设置保存在用户本地目录。<br />    <br />    <b>全局的配置文件settings.xml<br /><br /></b>   
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: rgb(238, 238, 238);">

&lt;servers&gt;<br />       //公司内部库，所有的release版本,serverid对应于repository id，用于在deploy时，访问使用，主要保存用户名和密码<br />&lt;server&gt;<br />&lt;id&gt;internal&lt;/id&gt;<br />&lt;username&gt;${website.username}&lt;/username&gt;<br />&lt;password&gt;${website.pwd}&lt;/password&gt;<br />&lt;filePermissions&gt;664&lt;/filePermissions&gt;<br />&lt;directoryPermissions&gt;775&lt;/directoryPermissions&gt;<br />&lt;/server&gt;<br />//目前的开发库，用于snapshot库<br />&lt;server&gt;<br />&lt;id&gt;snapshot&lt;/id&gt;<br />&lt;username&gt;${website.username}&lt;/username&gt;<br />&lt;password&gt;${website.pwd}&lt;/password&gt;<br />&lt;filePermissions&gt;664&lt;/filePermissions&gt;<br />&lt;directoryPermissions&gt;775&lt;/directoryPermissions&gt;<br />&lt;/server&gt;<br />&lt;/servers&gt;<br /><br />&lt;profiles&gt;<br />&lt;!--定义核心库 maven 镜像,由maven-proxy实现--&gt;<br />&lt;profile&gt;<br />&lt;id&gt;central-repo&lt;/id&gt;<br />&lt;repositories&gt;<br />&lt;repository&gt;<br />&lt;id&gt;central&lt;/id&gt;<br />&lt;name&gt;Internal Repository&lt;/name&gt;<br />&lt;url&gt;http://192.168.0.2:9999/repository&lt;/url&gt;<br />&lt;/repository&gt;<br />&lt;/repositories&gt;<br />&lt;pluginRepositories&gt;<br />&lt;pluginRepository&gt;<br />&lt;id&gt;central&lt;/id&gt;<br />&lt;name&gt;Internal Repository&lt;/name&gt;<br />&lt;url&gt;http://192.168.0.2:9999/repository&lt;/url&gt;<br />&lt;/pluginRepository&gt;<br />&lt;/pluginRepositories&gt;<br />&lt;/profile&gt;<br /><br />&lt;!--定义内部库，包括公司的所有release版本--&gt;<br />&lt;profile&gt;<br />&lt;id&gt;internal-repo&lt;/id&gt;<br />&lt;repositories&gt;<br />&lt;repository&gt;<br />&lt;id&gt;internal&lt;/id&gt;<br />&lt;name&gt;Internal Repository&lt;/name&gt;<br />&lt;url&gt;http://192.168.0.2:8080/repo-local&lt;/url&gt;<br />&lt;releases&gt;<br />&lt;enabled&gt;true&lt;/enabled&gt;<br />&lt;updatePolicy&gt;never&lt;/updatePolicy&gt;<br />&lt;checksumPolicy&gt;warn&lt;/checksumPolicy&gt;<br />&lt;/releases&gt;<br />&lt;/repository&gt;<br />&lt;/repositories&gt;<br />&lt;pluginRepositories&gt;<br />&lt;pluginRepository&gt;<br />&lt;id&gt;internal&lt;/id&gt;<br />&lt;name&gt;Internal Plugin Repository&lt;/name&gt;<br />&lt;url&gt;http://192.168.0.2:8080/repo-local&lt;/url&gt;<br />&lt;releases&gt;<br />&lt;enabled&gt;true&lt;/enabled&gt;<br />&lt;updatePolicy&gt;never&lt;/updatePolicy&gt;<br />&lt;checksumPolicy&gt;warn&lt;/checksumPolicy&gt;<br />&lt;/releases&gt;<br />&lt;/pluginRepository&gt;<br />&lt;/pluginRepositories&gt;<br />&lt;/profile&gt;<br />&lt;!--定义内部开发库 ，也可以合并snapshot和release--&gt;<br />&lt;profile&gt;<br />&lt;id&gt;snapshot-repo&lt;/id&gt;<br />&lt;repositories&gt;<br />&lt;repository&gt;<br />&lt;id&gt;snapshot&lt;/id&gt;<br />&lt;name&gt;Internal Repository&lt;/name&gt;<br />&lt;url&gt;http://192.168.0.2:8080/repo-snapshot&lt;/url&gt;<br />&lt;snapshots&gt;<br />&lt;enabled&gt;true&lt;/enabled&gt;<br />&lt;updatePolicy&gt;interval:60&lt;/updatePolicy&gt;<br />&lt;checksumPolicy&gt;warn&lt;/checksumPolicy&gt;<br />&lt;/snapshots&gt;<br />&lt;/repository&gt;<br />&lt;/repositories&gt;<br />&lt;pluginRepositories&gt;<br />&lt;pluginRepository&gt;<br />&lt;id&gt;snapshot&lt;/id&gt;<br />&lt;name&gt;Internal Plugin Repository&lt;/name&gt;<br />&lt;url&gt;http://192.168.0.2:8080/repo-snapshot&lt;/url&gt;<br />&lt;snapshots&gt;<br />&lt;enabled&gt;true&lt;/enabled&gt;<br />&lt;updatePolicy&gt;interval:60&lt;/updatePolicy&gt;<br />&lt;checksumPolicy&gt;warn&lt;/checksumPolicy&gt;<br />&lt;/snapshots&gt;<br />&lt;/pluginRepository&gt;<br />&lt;/pluginRepositories&gt;<br />&lt;/profile&gt;<br />&lt;/profiles&gt;<br />&lt;!-- 激活相应得配置--&gt;<br />&lt;activeProfiles&gt;<br />&lt;activeProfile&gt;central-repo&lt;/activeProfile&gt;<br />&lt;activeProfile&gt;internal-repo&lt;/activeProfile&gt;<br />&lt;activeProfile&gt;snapshot-repo&lt;/activeProfile&gt;<br />&lt;/activeProfiles&gt;<br />&lt;!-- 插件默认groupId --&gt;<br />&lt;pluginGroups&gt;<br />&lt;pluginGroup&gt;com.mycompany.plugins&lt;/pluginGroup&gt;<br />&lt;/pluginGroups&gt;</div><br />包括了以下的共享因素：<br /><br /><ul><li>服务器设置典型是共同的，只有用户名需要在用户环境中设置。使用一致的定义来配置共同的设置</li><li>profile定义了共同的因素，内部开发库，包括指定的组织或者部门发布的产品。这些库独立于核心开发库。</li><li>激活的profiles列表，用于激活相应的profile</li><li>plugin 组只有当你的组织中有自己定义的插件，用于命令行运行在pom中定义。</li></ul><br />

对于单独的用户来说，设置如下：<br /><br /><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: rgb(238, 238, 238);">
&lt;settings&gt;<br />&lt;profiles&gt;<br />&lt;profile&gt;<br />&lt;id&gt;property-overrides&lt;/id&gt;<br />&lt;properties&gt;<br />&lt;website.username&gt;myuser&lt;/website.username&gt;<br />&lt;website.pwd&gt;test&lt;/website.username&gt;<br />&lt;/properties&gt;<br />&lt;/profile&gt;<br />&lt;/profiles&gt;<br />&lt;/settings&gt;<br /><br /></div><br /><b>创建共享开发库</b><br />    大多数组织将会创建自己的内部开发库，用于配置，而中心开发库用于连接maven<br />    设置内部开发库是简单的，使用http协议，可以使用存在的http 服务器。或者创建新的服务，使用apache，或者jetty<br />    假设服务器地址192.168.0.2 ,端口8080<br />    http://192.168.0.2:8080/repo-local<br />    设置另外一个开发库，用于设置项目的snapshot库http://192.168.0.2:8080/repo-snapshot<br />    中心镜像库，使用maven-proxy创建，当然也可以创建自己的镜像。用于下载本地库中没有的artifact<br /><br /><br /><b>maven-proxy 设置</b><br />    从网上直接下载maven-proxy-standalone-0.2-app.jar和 proxy.properties<br />    在命令行中，直接运行java -jar maven-proxy-standalone-0.2-app.jar  proxy.properties<br />主要的配置：<br />设置repo.list 中增加相应的库就可以，如下定义：<br />repo.list=repo1.maven.org,...<br />#maven 的中心库<br />repo.repo1.maven.org.url=http://repo1.maven.org/maven2<br />repo.repo1.maven.org.description=maven.org<br />repo.repo1.maven.org.proxy=one<br />repo.repo1.maven.org.hardfail=false<br />repo.repo1.maven.org.cache.period=360000<br />repo.repo1.maven.org.cache.failures=true<br />以后所有的远程库，都通过此方式增加。顺便说一下，不要忘了注释原来的example，那是没有办法访问的。<br /><br />其他配置如<br />端口号 port=9999<br />保存的位置 repo.local.store=target/repo<br />serverName=http://localhost:9999<br /><br /><br /><b>创建标准的组织pom</b><br />定义共同的内容，包括公司的结构，如组织，部门以及团队。<br />察看一下maven 的自身，可以作为很好的参考。<br />如scm<br /> 
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: rgb(238, 238, 238);"><br />&lt;project&gt;<br />&lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;<br />&lt;parent&gt;<br />&lt;groupId&gt;org.apache.maven&lt;/groupId&gt;<br />&lt;artifactId&gt;maven-parent&lt;/artifactId&gt;<br />&lt;version&gt;1&lt;/version&gt;<br />&lt;/parent&gt;<br />&lt;groupId&gt;org.apache.maven.scm&lt;/groupId&gt;<br />&lt;artifactId&gt;maven-scm&lt;/artifactId&gt;<br />&lt;url&gt;http://maven.apache.org/maven-scm/&lt;/url&gt;<br />...<br />&lt;modules&gt;<br />&lt;module&gt;maven-scm-api&lt;/module&gt;<br />&lt;module&gt;maven-scm-providers&lt;/module&gt;<br />...<br />&lt;/modules&gt;<br />&lt;/project&gt;     <br /><br /></div><br />在maven父项目中可以看到如下定义：
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: rgb(238, 238, 238);"><br /> <br />&lt;project&gt;<br />&lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;<br />&lt;parent&gt;<br />&lt;groupId&gt;org.apache&lt;/groupId&gt;<br />&lt;artifactId&gt;apache&lt;/artifactId&gt;<br />&lt;version&gt;1&lt;/version&gt;<br />&lt;/parent&gt;<br />&lt;groupId&gt;org.apache.maven&lt;/groupId&gt;<br />&lt;artifactId&gt;maven-parent&lt;/artifactId&gt;<br />&lt;version&gt;5&lt;/version&gt;<br />&lt;url&gt;http://maven.apache.org/&lt;/url&gt;<br />...<br />&lt;mailingLists&gt;<br />&lt;mailingList&gt;<br />&lt;name&gt;Maven Announcements List&lt;/name&gt;<br />&lt;post&gt;announce@maven.apache.org&lt;/post&gt;<br />...<br />&lt;/mailingList&gt;<br />&lt;/mailingLists&gt;<br />&lt;developers&gt;<br />&lt;developer&gt;<br />...<br />&lt;/developer&gt;<br />&lt;/developers&gt;<br />&lt;/project&gt;     </div><br /><br />maven 父pom包括了共享的元素，如声明邮件列表，开发者。并且大多数项目继承apache组织：<br /> <br /><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: rgb(238, 238, 238);">
&lt;project&gt;<br />&lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;<br />&lt;groupId&gt;org.apache&lt;/groupId&gt;<br />&lt;artifactId&gt;apache&lt;/artifactId&gt;<br />&lt;version&gt;1&lt;/version&gt;<br />&lt;organization&gt;<br />&lt;name&gt;Apache Software Foundation&lt;/name&gt;<br />&lt;url&gt;http://www.apache.org/&lt;/url&gt;<br />&lt;/organization&gt;<br />&lt;url&gt;http://www.apache.org/&lt;/url&gt;<br />...<br />&lt;repositories&gt;<br />&lt;repository&gt;<br />&lt;id&gt;apache.snapshots&lt;/id&gt;<br />&lt;name&gt;Apache Snapshot Repository&lt;/name&gt;<br />&lt;url&gt;http://svn.apache.org/maven-snapshot-repository&lt;/url&gt;<br />&lt;releases&gt;<br />&lt;enabled&gt;false&lt;/enabled&gt;<br />&lt;/releases&gt;<br />&lt;/repository&gt;<br />&lt;/repositories&gt;<br />...<br />&lt;distributionManagement&gt;<br />&lt;repository&gt;<br />...<br />&lt;/repository&gt;<br />&lt;snapshotRepository&gt;<br />...<br />&lt;/snapshotRepository&gt;<br />&lt;/distributionManagement&gt;<br />&lt;/project&gt;     </div><br /><br />对于项目自身来说，父pom很少更新。所以，最后的方式保存父pom文件在单独的版本控制区域，它们能够check out，更改和配置.<br /><br /><b>使用Continuum持久整合<br /><br /></b>    持续整合自动build你的项目，通过一定的时间，包括所有的冲突在早期察觉，而不是发布的时候。另外持续整合也是一种很好的开发方式，使团队成员能产生细微的，交互的变动，能更有效的支持平行开发进程。<br />    可以使用maven的continuum作为持久整合的服务。<br />    安装continuum，比较简，使用以下的命令：<br />    C:\mvnbook\continuum-1.0.3&gt; bin\win32\run<br />    可以通过http://localhost:8082/continuum来验证<br />    为了支持continuum 发送e-mail提醒，你需要相应的smtp服务用于发送信息。默认使用localhost:25，如果你没有设置，编辑上面的文件改变smtp-host设置。<br />    下一步，设置svn目录：<br />    svn co file://localhost/C:/mvnbook/svn/proficio/trunk proficio<br />    编辑pom.xml用于正确相应得e-mail地址。
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: rgb(238, 238, 238);"><br /> <br />...<br />&lt;ciManagement&gt;<br />&lt;system&gt;continuum&lt;/system&gt;<br />&lt;url&gt;http://localhost:8080/continuum<br />&lt;notifiers&gt;<br />&lt;notifier&gt;<br />&lt;type&gt;mail&lt;/type&gt;<br />&lt;configuration&gt;<br />&lt;address&gt;youremail@yourdomain.com&lt;/address&gt;<br />&lt;/configuration&gt;<br />&lt;/notifier&gt;<br />&lt;/notifiers&gt;<br />&lt;/ciManagement&gt;<br />...<br />&lt;scm&gt;<br />&lt;connection&gt;<br />scm:svn:file://localhost/c:/mvnbook/svn/proficio/trunk<br />&lt;/connection&gt;<br />&lt;developerConnection&gt;<br />scm:svn:file://localhost/c:/mvnbook/svn/proficio/trunk<br />&lt;/developerConnection&gt;<br />&lt;/scm&gt;<br />...<br />&lt;distributionManagement&gt;<br />&lt;site&gt;<br />&lt;id&gt;website&lt;/id&gt;<br />&lt;url&gt;<br />file://localhost/c:/mvnbook/repository/sites/proficio<br />/reference/${project.version}<br />&lt;/url&gt;<br />&lt;/site&gt;<br />&lt;/distributionManagement&gt;    </div><br /><br />提交相应的pom,然后执行mvn install<br /><br />如果你返回http://localhost:8082/continuum，你会看到相应的项目列表。<br /><br />一旦你登录后，你可以选择mavan 2.0项目用于增加相应的项目。你可以增加你的url或者提交你的本地内容。<br /><br />你可以使用本地pom url，如下file://localhost/c:mvnbook/proficio/pom.xml<br /><br />在提交了此url后，continuum将会返回相应的成功信息。<br />以下的原则用于更好的帮助持续整合：<br />早提交，经常提交：当用户经常提交时，持续整合是最有效的。这并不意味着，提交不正确的代码。<br />经常运行build：用于最快检测失败<br />尽快修正失败：当失败发生时，应该马上修正失败<br />建议一个有效的版本<br />运行clean build<br />运行复杂的综合测试<br />build所有的项目结构分支<br />持续运行项目的拷贝<br /><br /><img src ="http://www.blogjava.net/zyl/aggbug/92256.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zyl/" target="_blank">布衣郎</a> 2007-01-07 19:41 <a href="http://www.blogjava.net/zyl/archive/2007/01/07/92256.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>maven 配置篇 之pom.xml</title><link>http://www.blogjava.net/zyl/archive/2006/12/30/91055.html</link><dc:creator>布衣郎</dc:creator><author>布衣郎</author><pubDate>Sat, 30 Dec 2006 12:05:00 GMT</pubDate><guid>http://www.blogjava.net/zyl/archive/2006/12/30/91055.html</guid><wfw:comment>http://www.blogjava.net/zyl/comments/91055.html</wfw:comment><comments>http://www.blogjava.net/zyl/archive/2006/12/30/91055.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zyl/comments/commentRss/91055.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zyl/services/trackbacks/91055.html</trackback:ping><description><![CDATA[
		<span style="font-size: 14px; line-height: 30px;">
    说完了settings.xml配置，下来说一下maven2的主要配置pom.xml<br /><b>什么是pom?</b><br />    pom作为项目对象模型。通过xml表示maven项目，使用pom.xml来实现。主要描述了项目：包括配置文件；开发者需要遵循的规则，缺陷管理系统，组织和licenses，项目的url，项目的依赖性，以及其他所有的项目相关因素。<br /><b>快速察看：</b><br />&lt;project&gt;<br />  &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;<br /><br />  &lt;!-- The Basics --&gt;<br />  &lt;groupId&gt;...&lt;/groupId&gt;<br />  &lt;artifactId&gt;...&lt;/artifactId&gt;<br />  &lt;version&gt;...&lt;/version&gt;<br />  &lt;packaging&gt;...&lt;/packaging&gt;<br />  &lt;dependencies&gt;...&lt;/dependencies&gt;<br />  &lt;parent&gt;...&lt;/parent&gt;<br />  &lt;dependencyManagement&gt;...&lt;/dependencyManagement&gt;<br />  &lt;modules&gt;...&lt;/modules&gt;<br />  &lt;properties&gt;...&lt;/properties&gt;<br /><br />  &lt;!-- Build Settings --&gt;<br />  &lt;build&gt;...&lt;/build&gt;<br />  &lt;reporting&gt;...&lt;/reporting&gt;<br /><br />  &lt;!-- More Project Information --&gt;<br />  &lt;name&gt;...&lt;/name&gt;<br />  &lt;description&gt;...&lt;/description&gt;<br />  &lt;url&gt;...&lt;/url&gt;<br />  &lt;inceptionYear&gt;...&lt;/inceptionYear&gt;<br />  &lt;licenses&gt;...&lt;/licenses&gt;<br />  &lt;organization&gt;...&lt;/organization&gt;<br />  &lt;developers&gt;...&lt;/developers&gt;<br />  &lt;contributors&gt;...&lt;/contributors&gt;<br /><br />  &lt;!-- Environment Settings --&gt;<br />  &lt;issueManagement&gt;...&lt;/issueManagement&gt;<br />  &lt;ciManagement&gt;...&lt;/ciManagement&gt;<br />  &lt;mailingLists&gt;...&lt;/mailingLists&gt; <br />  &lt;scm&gt;...&lt;/scm&gt;<br />  &lt;prerequisites&gt;...&lt;/prerequisites&gt;<br />  &lt;repositories&gt;...&lt;/repositories&gt;<br />  &lt;pluginRepositories&gt;...&lt;/pluginRepositories&gt;<br />  &lt;distributionManagement&gt;...&lt;/distributionManagement&gt;<br />  &lt;profiles&gt;...&lt;/profiles&gt;<br />&lt;/project&gt;<br /><br /><b>基本内容：</b><br />    POM包括了所有的项目信息。<br />maven 相关：<br />pom定义了最小的maven2元素，允许groupId,artifactId,version。所有需要的元素<br /></span>
		<ul>
				<li>
						<span style="font-size: 14px; line-height: 30px;">groupId:项目或者组织的唯一标志，并且配置时生成的路径也是由此生成，如org.codehaus.mojo生成的相对路径为：/org/codehaus/mojo</span>
				</li>
				<li>
						<span style="font-size: 14px; line-height: 30px;">artifactId: 项目的通用名称</span>
				</li>
				<li>
						<span style="font-size: 14px; line-height: 30px;">version:项目的版本</span>
				</li>
				<li>
						<span style="font-size: 14px; line-height: 30px;">packaging: 打包的机制，如pom, jar, maven-plugin, ejb, war, ear, rar, par</span>
				</li>
				<li>
						<span style="font-size: 14px; line-height: 30px;">classifier: 分类</span>
				</li>
		</ul>
		<span style="font-size: 14px; line-height: 30px;">
				<b>POM关系：</b>
				<br />主要为依赖，继承，合成<br /><b>  依赖关系：</b><br />  &lt;dependencies&gt;<br />    &lt;dependency&gt;<br />      &lt;groupId&gt;junit&lt;/groupId&gt;<br />      &lt;artifactId&gt;junit&lt;/artifactId&gt;<br />      &lt;version&gt;4.0&lt;/version&gt;<br />      &lt;type&gt;jar&lt;/type&gt;<br />      &lt;scope&gt;test&lt;/scope&gt;<br />      &lt;optional&gt;true&lt;/optional&gt;<br />    &lt;/dependency&gt;<br />    ...<br />  &lt;/dependencies&gt;<br /></span>
		<ul>
				<li>
						<span style="font-size: 14px; line-height: 30px;">groupId, artifactId, version:描述了依赖的项目唯一标志</span>
				</li>
		</ul>
		<blockquote>
				<span style="font-size: 14px; line-height: 30px;">可以通过以下方式进行安装：</span>
				<br />
				<span style="font-size: 14px; line-height: 30px;">
				</span>
		</blockquote>
		<blockquote>
				<ul>
						<li>
								<span style="font-size: 14px; line-height: 30px;">使用以下的命令安装：</span>
						</li>
						<li>
								<span style="font-size: 14px; line-height: 30px;">mvn install:install-file –Dfile=non-maven-proj.jar –DgroupId=some.group –DartifactId=non-maven-proj –Dversion=1</span>
						</li>
						<li>
								<span style="font-size: 14px; line-height: 30px;">创建自己的库,并配置，使用deploy:deploy-file</span>
						</li>
						<li>
								<span style="font-size: 14px; line-height: 30px;">设置此依赖范围为system，定义一个系统路径。不提倡。</span>
						</li>
				</ul>
		</blockquote>
		<ul>
				<li>
						<span style="font-size: 14px; line-height: 30px;">type:相应的依赖产品包形式，如jar，war</span>
				</li>
				<li>
						<span style="font-size: 14px; line-height: 30px;">scope:用于限制相应的依赖范围，包括以下的几种变量：</span>
				</li>
		</ul>
		<blockquote>
				<ul>
						<li>
								<span style="font-size: 14px; line-height: 30px;">compile ：默认范围，用于编译</span>
						</li>
						<li>
								<span style="font-size: 14px; line-height: 30px;">provided：类似于编译，但支持你期待jdk或者容器提供，类似于classpath</span>
						</li>
						<li>
								<span style="font-size: 14px; line-height: 30px;">runtime:在执行时，需要使用</span>
						</li>
						<li>
								<span style="font-size: 14px; line-height: 30px;">test:用于test任务时使用</span>
						</li>
						<li>
								<span style="font-size: 14px; line-height: 30px;">system:需要外在提供相应得元素。通过systemPath来取得</span>
						</li>
				</ul>
		</blockquote>
		<ul>
				<li>
						<span style="font-size: 14px; line-height: 30px;">systemPath: 仅用于范围为system。提供相应的路径</span>
				</li>
				<li>
						<span style="font-size: 14px; line-height: 30px;">optional: 标注可选，当项目自身也是依赖时。用于连续依赖时使用</span>
				</li>
		</ul>
		<span style="font-size: 14px; line-height: 30px;">
				<b>   独占性  </b>  <br />   外在告诉maven你只包括指定的项目，不包括相关的依赖。此因素主要用于解决版本冲突问题<br />  &lt;dependencies&gt;<br />    &lt;dependency&gt;<br />      &lt;groupId&gt;org.apache.maven&lt;/groupId&gt;<br />      &lt;artifactId&gt;maven-embedder&lt;/artifactId&gt;<br />      &lt;version&gt;2.0&lt;/version&gt;<br />      &lt;exclusions&gt;<br />        &lt;exclusion&gt;<br />          &lt;groupId&gt;org.apache.maven&lt;/groupId&gt;<br />          &lt;artifactId&gt;maven-core&lt;/artifactId&gt;<br />        &lt;/exclusion&gt;<br />      &lt;/exclusions&gt;<br />    &lt;/dependency&gt;<br />表示项目maven-embedder需要项目maven-core，但我们不想引用maven-core<br /><br /><b>继承关系</b><br />    另一个强大的变化,maven带来的是项目继承。主要的设置：<br />定义父项目<br />&lt;project&gt;<br />  &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;<br />  &lt;groupId&gt;org.codehaus.mojo&lt;/groupId&gt;<br />  &lt;artifactId&gt;my-parent&lt;/artifactId&gt;<br />  &lt;version&gt;2.0&lt;/version&gt;<br />  &lt;packaging&gt;pom&lt;/packaging&gt;<br />&lt;/project&gt;<br />    packaging 类型，需要pom用于parent和合成多个项目。我们需要增加相应的值给父pom，用于子项目继承。主要的元素如下：<br /></span>
		<ul>
				<li>
						<span style="font-size: 14px; line-height: 30px;">依赖型</span>
				</li>
				<li>
						<span style="font-size: 14px; line-height: 30px;">开发者和合作者</span>
				</li>
				<li>
						<span style="font-size: 14px; line-height: 30px;">插件列表</span>
				</li>
				<li>
						<span style="font-size: 14px; line-height: 30px;">报表列表</span>
				</li>
				<li>
						<span style="font-size: 14px; line-height: 30px;">插件执行使用相应的匹配ids</span>
				</li>
				<li>
						<span style="font-size: 14px; line-height: 30px;">插件配置</span>
				</li>
				<li>
						<span style="font-size: 14px; line-height: 30px;">子项目配置</span>
				</li>
		</ul>
		<span style="font-size: 14px; line-height: 30px;">&lt;project&gt;<br />  &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;<br />  &lt;parent&gt;<br />    &lt;groupId&gt;org.codehaus.mojo&lt;/groupId&gt;<br />    &lt;artifactId&gt;my-parent&lt;/artifactId&gt;<br />    &lt;version&gt;2.0&lt;/version&gt;<br />    &lt;relativePath&gt;../my-parent&lt;/relativePath&gt;<br />  &lt;/parent&gt;<br />  &lt;artifactId&gt;my-project&lt;/artifactId&gt;<br />&lt;/project&gt;<br />relativePath可以不需要，但是用于指明parent的目录，用于快速查询。<br /><br /><b>dependencyManagement：</b><br />用于父项目配置共同的依赖关系，主要配置依赖包相同因素，如版本，scope。<br /><br /><b>合成（或者多个模块）</b><br />    一个项目有多个模块，也叫做多重模块，或者合成项目。<br />如下的定义：<br />&lt;project&gt;<br />  &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;<br />  &lt;groupId&gt;org.codehaus.mojo&lt;/groupId&gt;<br />  &lt;artifactId&gt;my-parent&lt;/artifactId&gt;<br />  &lt;version&gt;2.0&lt;/version&gt;<br />  &lt;modules&gt;<br />    &lt;module&gt;my-project1&lt;module&gt;<br />    &lt;module&gt;my-project2&lt;module&gt;<br />  &lt;/modules&gt;<br />&lt;/project&gt;<br /><br /><b>build 设置</b><br />    主要用于编译设置，包括两个主要的元素，build和report<br /><b>  build</b><br />    主要分为两部分，基本元素和扩展元素集合<br />注意：包括项目build和profile build<br />&lt;project&gt;<br />  &lt;!-- "Project Build" contains more elements than just the BaseBuild set --&gt;<br />  &lt;build&gt;...&lt;/build&gt;<br />  &lt;profiles&gt;<br />    &lt;profile&gt;<br />      &lt;!-- "Profile Build" contains a subset of "Project Build"s elements --&gt;<br />      &lt;build&gt;...&lt;/build&gt;<br />    &lt;/profile&gt;<br />  &lt;/profiles&gt;<br />&lt;/project&gt;<br /><br />基本元素<br />&lt;build&gt;<br />  &lt;defaultGoal&gt;install&lt;/defaultGoal&gt;<br />  &lt;directory&gt;${basedir}/target&lt;/directory&gt;<br />  &lt;finalName&gt;${artifactId}-${version}&lt;/finalName&gt;<br />  &lt;filters&gt;<br />    &lt;filter&gt;filters/filter1.properties&lt;/filter&gt;<br />  &lt;/filters&gt;<br />  ...<br />&lt;/build&gt;<br /><br /></span>
		<ul>
				<li>
						<span style="font-size: 14px; line-height: 30px;">defaultGoal: 定义默认的目标或者阶段。如install</span>
				</li>
				<li>
						<span style="font-size: 14px; line-height: 30px;">directory: 编译输出的目录</span>
				</li>
				<li>
						<span style="font-size: 14px; line-height: 30px;">finalName: 生成最后的文件的样式</span>
				</li>
				<li>
						<span style="font-size: 14px; line-height: 30px;">filter: 定义过滤，用于替换相应的属性文件，使用maven定义的属性。设置所有placehold的值</span>
				</li>
		</ul>
		<span style="font-size: 14px; line-height: 30px;">
				<br />
				<b>资源(resources)</b>
				<br />    你项目中需要指定的资源。如spring配置文件,log4j.properties<br />&lt;project&gt;<br />  &lt;build&gt;<br />    ...<br />    &lt;resources&gt;<br />      &lt;resource&gt;<br />        &lt;targetPath&gt;META-INF/plexus&lt;/targetPath&gt;<br />        &lt;filtering&gt;false&lt;/filtering&gt;<br />        &lt;directory&gt;${basedir}/src/main/plexus&lt;/directory&gt;<br />        &lt;includes&gt;<br />          &lt;include&gt;configuration.xml&lt;/include&gt;<br />        &lt;/includes&gt;<br />        &lt;excludes&gt;<br />          &lt;exclude&gt;**/*.properties&lt;/exclude&gt;<br />        &lt;/excludes&gt;<br />      &lt;/resource&gt;<br />    &lt;/resources&gt;<br />    &lt;testResources&gt;<br />      ...<br />    &lt;/testResources&gt;<br />    ...<br />  &lt;/build&gt;<br />&lt;/project&gt;<br /><br /></span>
		<ul>
				<li>
						<span style="font-size: 14px; line-height: 30px;">resources: resource的列表，用于包括所有的资源</span>
				</li>
				<li>
						<span style="font-size: 14px; line-height: 30px;">targetPath: 指定目标路径，用于放置资源，用于build</span>
				</li>
				<li>
						<span style="font-size: 14px; line-height: 30px;">filtering: 是否替换资源中的属性placehold</span>
				</li>
				<li>
						<span style="font-size: 14px; line-height: 30px;">directory: 资源所在的位置</span>
				</li>
				<li>
						<span style="font-size: 14px; line-height: 30px;">includes: 样式，包括那些资源</span>
				</li>
				<li>
						<span style="font-size: 14px; line-height: 30px;">excludes: 排除的资源</span>
				</li>
				<li>
						<span style="font-size: 14px; line-height: 30px;">testResources: 测试资源列表</span>
				</li>
		</ul>
		<span style="font-size: 14px; line-height: 30px;">
				<b>插件</b>
				<br />  在build时，执行的插件，比较有用的部分，如使用jdk 5.0编译等等<br />&lt;project&gt;<br />  &lt;build&gt;<br />    ...<br />    &lt;plugins&gt;<br />      &lt;plugin&gt;<br />        &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;<br />        &lt;artifactId&gt;maven-jar-plugin&lt;/artifactId&gt;<br />        &lt;version&gt;2.0&lt;/version&gt;<br />        &lt;extensions&gt;false&lt;/extensions&gt;<br />        &lt;inherited&gt;true&lt;/inherited&gt;<br />        &lt;configuration&gt;<br />          &lt;classifier&gt;test&lt;/classifier&gt;<br />        &lt;/configuration&gt;<br />        &lt;dependencies&gt;...&lt;/dependencies&gt;<br />        &lt;executions&gt;...&lt;/executions&gt;<br />      &lt;/plugin&gt;<br />    &lt;/plugins&gt;<br />  &lt;/build&gt;<br />&lt;/project&gt;<br /></span>
		<ul>
				<li>
						<span style="font-size: 14px; line-height: 30px;">extensions: true or false，是否装载插件扩展。默认false</span>
				</li>
				<li>
						<span style="font-size: 14px; line-height: 30px;">inherited: true or false，是否此插件配置将会应用于poms，那些继承于此的项目</span>
				</li>
				<li>
						<span style="font-size: 14px; line-height: 30px;">configuration: 指定插件配置</span>
				</li>
				<li>
						<span style="font-size: 14px; line-height: 30px;">dependencies: 插件需要依赖的包</span>
				</li>
				<li>
						<span style="font-size: 14px; line-height: 30px;">executions: 用于配置execution目标，一个插件可以有多个目标。</span>
				</li>
		</ul>
		<span style="font-size: 14px; line-height: 30px;">如下：<br />    &lt;plugin&gt;<br />        &lt;artifactId&gt;maven-antrun-plugin&lt;/artifactId&gt;<br /><br />        &lt;executions&gt;<br />          &lt;execution&gt;<br />            &lt;id&gt;echodir&lt;/id&gt;<br />            &lt;goals&gt;<br />              &lt;goal&gt;run&lt;/goal&gt;<br />            &lt;/goals&gt;<br />            &lt;phase&gt;verify&lt;/phase&gt;<br />            &lt;inherited&gt;false&lt;/inherited&gt;<br />            &lt;configuration&gt;<br />              &lt;tasks&gt;<br />                &lt;echo&gt;Build Dir: ${project.build.directory}&lt;/echo&gt;<br />              &lt;/tasks&gt;<br />            &lt;/configuration&gt;<br />          &lt;/execution&gt;<br />        &lt;/executions&gt;<br />      &lt;/plugin&gt;<br />  说明：<br /></span>
		<ul>
				<li>
						<span style="font-size: 14px; line-height: 30px;">id:规定execution 的唯一标志</span>
				</li>
				<li>
						<span style="font-size: 14px; line-height: 30px;">goals: 表示目标</span>
				</li>
				<li>
						<span style="font-size: 14px; line-height: 30px;">phase: 表示阶段，目标将会在什么阶段执行</span>
				</li>
				<li>
						<span style="font-size: 14px; line-height: 30px;">inherited: 和上面的元素一样，设置false maven将会拒绝执行继承给子插件</span>
				</li>
				<li>
						<span style="font-size: 14px; line-height: 30px;">configuration: 表示此执行的配置属性</span>
				</li>
		</ul>
		<span style="font-size: 14px; line-height: 30px;">
				<br />
				<b>插件管理</b>
				<br />    pluginManagement：插件管理以同样的方式包括插件元素，用于在特定的项目中配置。所有继承于此项目的子项目都能使用。主要定义插件的共同元素<br /><br /><b>扩展元素集合</b><br />主要包括以下的元素：<br /><b>Directories</b><br />用于设置各种目录结构，如下：<br />  &lt;build&gt;<br />    &lt;sourceDirectory&gt;${basedir}/src/main/java&lt;/sourceDirectory&gt;<br />    &lt;scriptSourceDirectory&gt;${basedir}/src/main/scripts&lt;/scriptSourceDirectory&gt;<br />    &lt;testSourceDirectory&gt;${basedir}/src/test/java&lt;/testSourceDirectory&gt;<br />    &lt;outputDirectory&gt;${basedir}/target/classes&lt;/outputDirectory&gt;<br />    &lt;testOutputDirectory&gt;${basedir}/target/test-classes&lt;/testOutputDirectory&gt;<br />    ...<br />  &lt;/build&gt;<br /><br /><b>Extensions</b><br /><br />表示需要扩展的插件，必须包括进相应的build路径。<br /><br />&lt;project&gt;<br />  &lt;build&gt;<br />    ...<br />    &lt;extensions&gt;<br />      &lt;extension&gt;<br />        &lt;groupId&gt;org.apache.maven.wagon&lt;/groupId&gt;<br />        &lt;artifactId&gt;wagon-ftp&lt;/artifactId&gt;<br />        &lt;version&gt;1.0-alpha-3&lt;/version&gt;<br />      &lt;/extension&gt;<br />    &lt;/extensions&gt;<br />    ...<br />  &lt;/build&gt;<br />&lt;/project&gt;<br /><br /><b>Reporting</b><br />    用于在site阶段输出报表。特定的maven 插件能输出相应的定制和配置报表。<br />  &lt;reporting&gt;<br />    &lt;plugins&gt;<br />      &lt;plugin&gt;<br />        &lt;outputDirectory&gt;${basedir}/target/site&lt;/outputDirectory&gt;<br />        &lt;artifactId&gt;maven-project-info-reports-plugin&lt;/artifactId&gt;<br />        &lt;reportSets&gt;<br />          &lt;reportSet&gt;&lt;/reportSet&gt;<br />        &lt;/reportSets&gt;<br />      &lt;/plugin&gt;<br />    &lt;/plugins&gt;<br />  &lt;/reporting&gt;<br /><br /><b>Report Sets</b><br />    用于配置不同的目标，应用于不同的报表<br />&lt;reporting&gt;<br />    &lt;plugins&gt;<br />      &lt;plugin&gt;<br />        ...<br />        &lt;reportSets&gt;<br />          &lt;reportSet&gt;<br />            &lt;id&gt;sunlink&lt;/id&gt;<br />            &lt;reports&gt;<br />              &lt;report&gt;javadoc&lt;/report&gt;<br />            &lt;/reports&gt;<br />            &lt;inherited&gt;true&lt;/inherited&gt;<br />            &lt;configuration&gt;<br />              &lt;links&gt;<br />                &lt;link&gt;http://java.sun.com/j2se/1.5.0/docs/api/&lt;/link&gt;<br />              &lt;/links&gt;<br />            &lt;/configuration&gt;<br />          &lt;/reportSet&gt;<br />        &lt;/reportSets&gt;<br />      &lt;/plugin&gt;<br />    &lt;/plugins&gt;<br />  &lt;/reporting&gt;<br /><br /><b>更多的项目信息</b><br />name:项目除了artifactId外，可以定义多个名称<br />description: 项目描述<br />url: 项目url<br />inceptionYear:创始年份<br /><br /><b>Licenses</b><br />&lt;licenses&gt;<br />  &lt;license&gt;<br />    &lt;name&gt;Apache 2&lt;/name&gt;<br />    &lt;url&gt;http://www.apache.org/licenses/LICENSE-2.0.txt&lt;/url&gt;<br />    &lt;distribution&gt;repo&lt;/distribution&gt;<br />    &lt;comments&gt;A business-friendly OSS license&lt;/comments&gt;<br />  &lt;/license&gt;<br />&lt;/licenses&gt;<br /><br /><b>Organization</b><br />配置组织信息<br />  &lt;organization&gt;<br />    &lt;name&gt;Codehaus Mojo&lt;/name&gt;<br />    &lt;url&gt;http://mojo.codehaus.org&lt;/url&gt;<br />  &lt;/organization&gt;<br /><br /><b>Developers</b><br />配置开发者信息<br />&lt;developers&gt;<br />    &lt;developer&gt;<br />      &lt;id&gt;eric&lt;/id&gt;<br />      &lt;name&gt;Eric&lt;/name&gt;<br />      &lt;email&gt;eredmond@codehaus.org&lt;/email&gt;<br />      &lt;url&gt;http://eric.propellors.net&lt;/url&gt;<br />      &lt;organization&gt;Codehaus&lt;/organization&gt;<br />      &lt;organizationUrl&gt;http://mojo.codehaus.org&lt;/organizationUrl&gt;<br />      &lt;roles&gt;<br />        &lt;role&gt;architect&lt;/role&gt;<br />        &lt;role&gt;developer&lt;/role&gt;<br />      &lt;/roles&gt;<br />      &lt;timezone&gt;-6&lt;/timezone&gt;<br />      &lt;properties&gt;<br />        &lt;picUrl&gt;http://tinyurl.com/prv4t&lt;/picUrl&gt;<br />      &lt;/properties&gt;<br />    &lt;/developer&gt;<br />  &lt;/developers&gt;<br /><br /><b>Contributors</b><br />  &lt;contributors&gt;<br />    &lt;contributor&gt;<br />      &lt;name&gt;Noelle&lt;/name&gt;<br />      &lt;email&gt;some.name@gmail.com&lt;/email&gt;<br />      &lt;url&gt;http://noellemarie.com&lt;/url&gt;<br />      &lt;organization&gt;Noelle Marie&lt;/organization&gt;<br />      &lt;organizationUrl&gt;http://noellemarie.com&lt;/organizationUrl&gt;<br />      &lt;roles&gt;<br />        &lt;role&gt;tester&lt;/role&gt;<br />      &lt;/roles&gt;<br />      &lt;timezone&gt;-5&lt;/timezone&gt;<br />      &lt;properties&gt;<br />        &lt;gtalk&gt;some.name@gmail.com&lt;/gtalk&gt;<br />      &lt;/properties&gt;<br />    &lt;/contributor&gt;<br />  &lt;/contributors&gt;<br /><br /><b>环境设置</b><br /><br /><b>Issue Management</b><br />    定义相关的bug跟踪系统，如bugzilla,testtrack,clearQuest等<br />  &lt;issueManagement&gt;<br />    &lt;system&gt;Bugzilla&lt;/system&gt;<br />    &lt;url&gt;http://127.0.0.1/bugzilla&lt;/url&gt;<br />  &lt;/issueManagement&gt;<br /><b>Continuous Integration Management</b><br />连续整合管理，基于triggers或者timings<br />  &lt;ciManagement&gt;<br />    &lt;system&gt;continuum&lt;/system&gt;<br />    &lt;url&gt;http://127.0.0.1:8080/continuum&lt;/url&gt;<br />    &lt;notifiers&gt;<br />      &lt;notifier&gt;<br />        &lt;type&gt;mail&lt;/type&gt;<br />        &lt;sendOnError&gt;true&lt;/sendOnError&gt;<br />        &lt;sendOnFailure&gt;true&lt;/sendOnFailure&gt;<br />        &lt;sendOnSuccess&gt;false&lt;/sendOnSuccess&gt;<br />        &lt;sendOnWarning&gt;false&lt;/sendOnWarning&gt;<br />        &lt;configuration&gt;&lt;address&gt;continuum@127.0.0.1&lt;/address&gt;&lt;/configuration&gt;<br />      &lt;/notifier&gt;<br />    &lt;/notifiers&gt;<br />  &lt;/ciManagement&gt;<br /><br /><b>Mailing Lists</b><br />  &lt;mailingLists&gt;<br />    &lt;mailingList&gt;<br />      &lt;name&gt;User List&lt;/name&gt;<br />      &lt;subscribe&gt;user-subscribe@127.0.0.1&lt;/subscribe&gt;<br />      &lt;unsubscribe&gt;user-unsubscribe@127.0.0.1&lt;/unsubscribe&gt;<br />      &lt;post&gt;user@127.0.0.1&lt;/post&gt;<br />      &lt;archive&gt;http://127.0.0.1/user/&lt;/archive&gt;<br />      &lt;otherArchives&gt;<br />        &lt;otherArchive&gt;http://base.google.com/base/1/127.0.0.1&lt;/otherArchive&gt;<br />      &lt;/otherArchives&gt;<br />    &lt;/mailingList&gt;<br />  &lt;/mailingLists&gt;<br /><br /><b>SCM</b><br />  软件配置管理，如cvs 和svn<br />  &lt;scm&gt;<br />    &lt;connection&gt;scm:svn:http://127.0.0.1/svn/my-project&lt;/connection&gt;<br />    &lt;developerConnection&gt;scm:svn:https://127.0.0.1/svn/my-project&lt;/developerConnection&gt;<br />    &lt;tag&gt;HEAD&lt;/tag&gt;<br />    &lt;url&gt;http://127.0.0.1/websvn/my-project&lt;/url&gt;<br />  &lt;/scm&gt;<br /><br /><b>Repositories</b><br /><br />配置同setting.xml中的开发库<br /><br /><b>Plugin Repositories</b><br />配置同 repositories<br /><br /><b>Distribution Management</b><br />用于配置分发管理，配置相应的产品发布信息,主要用于发布，在执行mvn deploy后表示要发布的位置<br /><b>1 配置到文件系统</b><br />&lt;distributionManagement&gt;<br />&lt;repository&gt;<br />&lt;id&gt;proficio-repository&lt;/id&gt;<br />&lt;name&gt;Proficio Repository&lt;/name&gt;<br />&lt;url&gt;file://${basedir}/target/deploy&lt;/url&gt;<br />&lt;/repository&gt;<br />&lt;/distributionManagement&gt;<br /><b>2 使用ssh2配置</b><br />&lt;distributionManagement&gt;<br />&lt;repository&gt;<br />&lt;id&gt;proficio-repository&lt;/id&gt;<br />&lt;name&gt;Proficio Repository&lt;/name&gt;<br />&lt;url&gt;scp://sshserver.yourcompany.com/deploy&lt;/url&gt;<br />&lt;/repository&gt;<br />&lt;/distributionManagement&gt;<br /><b>3 使用sftp配置</b><br />&lt;distributionManagement&gt;<br />&lt;repository&gt;<br />&lt;id&gt;proficio-repository&lt;/id&gt;<br />&lt;name&gt;Proficio Repository&lt;/name&gt;<br />&lt;url&gt;sftp://ftpserver.yourcompany.com/deploy&lt;/url&gt;<br />&lt;/repository&gt;<br />&lt;/distributionManagement&gt;<br /><b>4 使用外在的ssh配置</b><br />    编译扩展用于指定使用wagon外在ssh提供，用于提供你的文件到相应的远程服务器。<br />&lt;distributionManagement&gt;<br />&lt;repository&gt;<br />&lt;id&gt;proficio-repository&lt;/id&gt;<br />&lt;name&gt;Proficio Repository&lt;/name&gt;<br />&lt;url&gt;scpexe://sshserver.yourcompany.com/deploy&lt;/url&gt;<br />&lt;/repository&gt;<br />&lt;/distributionManagement&gt;<br />&lt;build&gt;<br />&lt;extensions&gt;<br />&lt;extension&gt;<br />&lt;groupId&gt;org.apache.maven.wagon&lt;/groupId&gt;<br />&lt;artifactId&gt;wagon-ssh-external&lt;/artifactId&gt;<br />&lt;version&gt;1.0-alpha-6&lt;/version&gt;<br />&lt;/extension&gt;<br />&lt;/extensions&gt;<br />&lt;/build&gt;<br /><br /><b>5 使用ftp配置</b><br />&lt;distributionManagement&gt;<br />&lt;repository&gt;<br />&lt;id&gt;proficio-repository&lt;/id&gt;<br />&lt;name&gt;Proficio Repository&lt;/name&gt;<br />&lt;url&gt;ftp://ftpserver.yourcompany.com/deploy&lt;/url&gt;<br />&lt;/repository&gt;<br />&lt;/distributionManagement&gt;<br />&lt;build&gt;<br />&lt;extensions&gt;<br />&lt;extension&gt;<br />&lt;groupId&gt;org.apache.maven.wagon&lt;/groupId&gt;<br />&lt;artifactId&gt;wagon-ftp&lt;/artifactId&gt;<br />&lt;version&gt;1.0-alpha-6&lt;/version&gt;<br />&lt;/extension&gt;<br />&lt;/extensions&gt;<br />&lt;/build&gt;<br /><br />repository 对应于你的开发库，用户信息通过settings.xml中的server取得<br /><br /><b>Profiles</b><br />类似于settings.xml中的profiles，增加了几个元素，如下的样式：<br />  &lt;profiles&gt;<br />    &lt;profile&gt;<br />      &lt;id&gt;test&lt;/id&gt;<br />      &lt;activation&gt;...&lt;/activation&gt;<br />      &lt;build&gt;...&lt;/build&gt;<br />      &lt;modules&gt;...&lt;/modules&gt;<br />      &lt;repositories&gt;...&lt;/repositories&gt;<br />      &lt;pluginRepositories&gt;...&lt;/pluginRepositories&gt;<br />      &lt;dependencies&gt;...&lt;/dependencies&gt;<br />      &lt;reporting&gt;...&lt;/reporting&gt;<br />      &lt;dependencyManagement&gt;...&lt;/dependencyManagement&gt;<br />      &lt;distributionManagement&gt;...&lt;/distributionManagement&gt;<br />    &lt;/profile&gt;<br />  &lt;/profiles&gt;<br /><br /></span>
<img src ="http://www.blogjava.net/zyl/aggbug/91055.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zyl/" target="_blank">布衣郎</a> 2006-12-30 20:05 <a href="http://www.blogjava.net/zyl/archive/2006/12/30/91055.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>maven 配置篇 之 settings.xml</title><link>http://www.blogjava.net/zyl/archive/2006/12/29/90802.html</link><dc:creator>布衣郎</dc:creator><author>布衣郎</author><pubDate>Fri, 29 Dec 2006 12:16:00 GMT</pubDate><guid>http://www.blogjava.net/zyl/archive/2006/12/29/90802.html</guid><wfw:comment>http://www.blogjava.net/zyl/comments/90802.html</wfw:comment><comments>http://www.blogjava.net/zyl/archive/2006/12/29/90802.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zyl/comments/commentRss/90802.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zyl/services/trackbacks/90802.html</trackback:ping><description><![CDATA[
		<span style="font-size: 14px; line-height: 30px;">    maven2 比起maven1 来说，需要配置的文件少多了，主要集中在pom.xml和settings.xml中。<br />    先来说说settings.xml，settings.xml对于maven来说相当于全局性的配置，用于所有的项目。在maven2中存在两个settings.xml，一个位于maven2的安装目录conf下面，作为全局性配置。对于团队设置，保持一致的定义是关键，所以maven2/conf下面的settings.xml就作为团队共同的配置文件。保证所有的团队成员都拥有相同的配置。当然对于每个成员，都需要特殊的自定义设置，如用户信息，所以另外一个settings.xml就作为本地配置。默认的位置为：${user.dir}/.m2/settings.xml目录中（${user.dir} 指windows 中的用户目录）。<br />    settings.xml基本结构如下：<br />    &lt;settings xmlns="http://maven.apache.org/POM/4.0.0"<br />          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"<br />          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 <br />                               http://maven.apache.org/xsd/settings-1.0.0.xsd"&gt;<br />  &lt;localRepository/&gt;<br />  &lt;interactiveMode/&gt;<br />  &lt;usePluginRegistry/&gt;<br />  &lt;offline/&gt;<br />  &lt;pluginGroups/&gt;<br />  &lt;servers/&gt;<br />  &lt;mirrors/&gt;<br />  &lt;proxies/&gt;<br />  &lt;profiles/&gt;<br />  &lt;activeProfiles/&gt;<br />&lt;/settings&gt;<br />简单介绍一下几个主要的配置因素：<br /><b>localRepository：</b>表示本地库的保存位置，也就是maven2主要的jar保存位置，默认在${user.dir}/.m2/repository，如果需要另外设置，就换成其他的路径。<br /><b>offline：</b>如果不想每次编译，都去查找远程中心库，那就设置为true。当然前提是你已经下载了必须的依赖包。<br /><b>Servers</b><br />   在POM中的 distributionManagement元素定义了开发库。然而，特定的username和pwd不能使用于pom.xml，所以通过此配置来保存server信息<br />  &lt;servers&gt;<br />    &lt;server&gt;<br />      &lt;id&gt;server001&lt;/id&gt;<br />      &lt;username&gt;my_login&lt;/username&gt;<br />      &lt;password&gt;my_password&lt;/password&gt;<br />      &lt;privateKey&gt;${usr.home}/.ssh/id_dsa&lt;/privateKey&gt;<br />      &lt;passphrase&gt;some_passphrase&lt;/passphrase&gt;<br />      &lt;filePermissions&gt;664&lt;/filePermissions&gt;<br />      &lt;directoryPermissions&gt;775&lt;/directoryPermissions&gt;<br />      &lt;configuration&gt;&lt;/configuration&gt;<br />    &lt;/server&gt;<br />  &lt;/servers&gt; <br /></span>
		<ul>
				<li>
						<span style="font-size: 14px; line-height: 30px;">id:server 的id,用于匹配distributionManagement库id，比较重要。</span>
				</li>
				<li>
						<span style="font-size: 14px; line-height: 30px;">username, password:用于登陆此服务器的用户名和密码</span>
				</li>
				<li>
						<span style="font-size: 14px; line-height: 30px;">privateKey, passphrase：设置private key，以及passphrase</span>
				</li>
				<li>
						<span style="font-size: 14px; line-height: 30px;">filePermissions, directoryPermissions：当库文件或者目录创建后，需要使用权限进行访问。参照unix文件许可，如664和775</span>
				</li>
		</ul>
		<span style="font-size: 14px; line-height: 30px;">
				<b>Mirrors</b>
				<br />表示镜像库，指定库的镜像，用于增加其他库<br />  &lt;mirrors&gt;<br />    &lt;mirror&gt;<br />      &lt;id&gt;planetmirror.com&lt;/id&gt;<br />      &lt;name&gt;PlanetMirror Australia&lt;/name&gt;<br />      &lt;url&gt;http://downloads.planetmirror.com/pub/maven2&lt;/url&gt;<br />      &lt;mirrorOf&gt;central&lt;/mirrorOf&gt;<br />    &lt;/mirror&gt;<br />  &lt;/mirrors&gt;<br /></span>
		<ul>
				<li>
						<span style="font-size: 14px; line-height: 30px;">id,name:唯一的标志，用于区别镜像</span>
				</li>
				<li>
						<span style="font-size: 14px; line-height: 30px;">url:镜像的url</span>
				</li>
				<li>
						<span style="font-size: 14px; line-height: 30px;">mirrorOf：此镜像指向的服务id</span>
				</li>
		</ul>
		<span style="font-size: 14px; line-height: 30px;">
				<b>Proxies</b>
				<br />此设置，主要用于无法直接访问中心的库用户配置。<br />  &lt;proxies&gt;<br />    &lt;proxy&gt;<br />      &lt;id&gt;myproxy&lt;/id&gt;<br />      &lt;active&gt;true&lt;/active&gt;<br />      &lt;protocol&gt;http&lt;/protocol&gt;<br />      &lt;host&gt;proxy.somewhere.com&lt;/host&gt;<br />      &lt;port&gt;8080&lt;/port&gt;<br />      &lt;username&gt;proxyuser&lt;/username&gt;<br />      &lt;password&gt;somepassword&lt;/password&gt;<br />      &lt;nonProxyHosts&gt;*.google.com|ibiblio.org&lt;/nonProxyHosts&gt;<br />    &lt;/proxy&gt;<br />  &lt;/proxies&gt;<br /></span>
		<ul>
				<li>
						<span style="font-size: 14px; line-height: 30px;">id:代理的标志</span>
				</li>
				<li>
						<span style="font-size: 14px; line-height: 30px;">active：是否激活代理</span>
				</li>
				<li>
						<span style="font-size: 14px; line-height: 30px;">protocol, host, port:protocol://host:port 代理</span>
				</li>
				<li>
						<span style="font-size: 14px; line-height: 30px;">username, password：用户名和密码</span>
				</li>
				<li>
						<span style="font-size: 14px; line-height: 30px;">nonProxyHosts: 不需要代理的host</span>
				</li>
		</ul>
		<span style="font-size: 14px; line-height: 30px;">
				<b>Profiles</b>
				<br />  类似于pom.xml中的profile元素，主要包括activation,repositories,pluginRepositories 和properties元素<br />  刚开始接触的时候，可能会比较迷惑，其实这是maven2中比较强大的功能。从字面上来说，就是个性配置。<br />  单独定义profile后，并不会生效，需要通过满足条件来激活。<br /> <b>repositories 和pluginRepositories </b><br /> 定义其他开发库和插件开发库。对于团队来说，肯定有自己的开发库。可以通过此配置来定义。<br /> 如下的配置，定义了本地开发库，用于release 发布。<br />    &lt;repositories&gt;<br />        &lt;repository&gt;<br />          &lt;id&gt;repo-local&lt;/id&gt;<br />       &lt;name&gt;Internal 开发库&lt;/name&gt;<br />       &lt;url&gt;http://192.168.0.2:8082/repo-local&lt;/url&gt;<br />          &lt;releases&gt;<br />            &lt;enabled&gt;true&lt;/enabled&gt;<br />            &lt;updatePolicy&gt;never&lt;/updatePolicy&gt;<br />            &lt;checksumPolicy&gt;warn&lt;/checksumPolicy&gt;<br />          &lt;/releases&gt;<br />          &lt;snapshots&gt;<br />            &lt;enabled&gt;false&lt;/enabled&gt;<br />          &lt;/snapshots&gt;<br />          &lt;layout&gt;default&lt;/layout&gt;<br />        &lt;/repository&gt;<br />      &lt;/repositories&gt;<br />      &lt;pluginRepositories&gt;<br />    &lt;pluginRepository&gt;<br />    &lt;id&gt;repo-local&lt;/id&gt;<br />    &lt;name&gt;Internal 开发库&lt;/name&gt;<br />    &lt;url&gt;http://192.168.0.2:8082/repo-local&lt;/url&gt;<br />    &lt;releases&gt;<br />            &lt;enabled&gt;true&lt;/enabled&gt;<br />            &lt;updatePolicy&gt;never&lt;/updatePolicy&gt;<br />            &lt;checksumPolicy&gt;warn&lt;/checksumPolicy&gt;<br />    &lt;/releases&gt;<br />    &lt;snapshots&gt;<br />    &lt;enabled&gt;false&lt;/enabled&gt;<br />    &lt;/snapshots&gt;<br />    &lt;layout&gt;default&lt;/layout&gt;<br />    &lt;/pluginRepository&gt;<br />    &lt;/pluginRepositories&gt;<br />releases, snapshots:每个产品的版本的Release或者snapshot(注：release和snapshot的区别，release一般是比较稳定的版本，而snapshot基本上不稳定，只是作为快照）<br /><br /><b>properties</b><br />  maven 的properties作为placeholder值，如ant的properties。<br />包括以下的5种类型值：<br /></span>
		<ol>
				<li>
						<span style="font-size: 14px; line-height: 30px;">env.X，返回当前的环境变量</span>
				</li>
				<li>
						<span style="font-size: 14px; line-height: 30px;">project.x:返回pom中定义的元素值，如project.version</span>
				</li>
				<li>
						<span style="font-size: 14px; line-height: 30px;">settings.x：返回settings.xml中定义的元素</span>
				</li>
				<li>
						<span style="font-size: 14px; line-height: 30px;">java 系统属性：所有经过java.lang.System.getProperties()返回的值</span>
				</li>
				<li>
						<span style="font-size: 14px; line-height: 30px;">x：用户自己设定的值</span>
				</li>
		</ol>
		<span style="font-size: 14px; line-height: 30px;">
				<b>Activation</b>
				<br />  用于激活此profile<br />  &lt;activation&gt;<br />        &lt;activeByDefault&gt;false&lt;/activeByDefault&gt;<br />        &lt;jdk&gt;1.5&lt;/jdk&gt;<br />        &lt;os&gt;<br />          &lt;name&gt;Windows XP&lt;/name&gt;<br />          &lt;family&gt;Windows&lt;/family&gt;<br />          &lt;arch&gt;x86&lt;/arch&gt;<br />          &lt;version&gt;5.1.2600&lt;/version&gt;<br />        &lt;/os&gt;<br />        &lt;property&gt;<br />          &lt;name&gt;mavenVersion&lt;/name&gt;<br />          &lt;value&gt;2.0.3&lt;/value&gt;<br />        &lt;/property&gt;<br />        &lt;file&gt;<br />          &lt;exists&gt;${basedir}/file2.properties&lt;/exists&gt;<br />          &lt;missing&gt;${basedir}/file1.properties&lt;/missing&gt;<br />        &lt;/file&gt;<br />      &lt;/activation&gt;<br /></span>
		<ul>
				<li>
						<span style="font-size: 14px; line-height: 30px;">jdk:如果匹配指定的jdk版本，将会激活</span>
				</li>
				<li>
						<span style="font-size: 14px; line-height: 30px;">os:操作系统</span>
				</li>
				<li>
						<span style="font-size: 14px; line-height: 30px;">property：如果maven能检测到相应的属性</span>
				</li>
				<li>
						<span style="font-size: 14px; line-height: 30px;">file: 用于判断文件是否存在或者不存在</span>
				</li>
		</ul>
		<span style="font-size: 14px; line-height: 30px;">
				<br />除了使用activation来激活profile，同样可以通过activeProfiles来激活<br /><b>Active Profiles</b><br />表示激活的profile,通过profile id来指定。<br />  &lt;activeProfiles&gt;<br />    &lt;activeProfile&gt;env-test&lt;/activeProfile&gt; 指定的profile id<br />  &lt;/activeProfiles&gt;<br /><br /></span>
<img src ="http://www.blogjava.net/zyl/aggbug/90802.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zyl/" target="_blank">布衣郎</a> 2006-12-29 20:16 <a href="http://www.blogjava.net/zyl/archive/2006/12/29/90802.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>maven2 起步</title><link>http://www.blogjava.net/zyl/archive/2006/12/02/84972.html</link><dc:creator>布衣郎</dc:creator><author>布衣郎</author><pubDate>Sat, 02 Dec 2006 02:46:00 GMT</pubDate><guid>http://www.blogjava.net/zyl/archive/2006/12/02/84972.html</guid><wfw:comment>http://www.blogjava.net/zyl/comments/84972.html</wfw:comment><comments>http://www.blogjava.net/zyl/archive/2006/12/02/84972.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zyl/comments/commentRss/84972.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zyl/services/trackbacks/84972.html</trackback:ping><description><![CDATA[
		<span style="font-size: 14px; line-height: 30px;">    相信maven1 大家都已经很熟悉了，具体maven能做什么，就不详细说了。个人觉得maven在开源项目中用的还是比较多的，公司内部，就不太清楚了。我以前的公司用过一段时间，不过后来就没有下文了。<br />    与maven1 相比，maven2可算是几乎重写了，不过从速度来说应该更快。<br />    主要的几个新特性包括：（详细参考http://www.ibm.com/developerworks/cn/opensource/os-maven2/index.html）<br />    1． 更快、更简单<br />        速度方面可以比上ant了<br />    2． 更少的配置文件<br />        现在的配置文件只剩下了settings.xml和pom.xml了。<br />    3.  Plugin语言更换<br />        语言开始支持java,BeanShell和ant<br />    4.  提供了预定义的模版<br />        这点是最有帮助的，用户可以自己定义自己的项目模版了，就像用appfuse一样生成项目结构<br />    5． 生命周期的引入<br />         在Maven2中有了明确的生命周期概念，而且都提供与之对应的命令，使得项目构建更加清晰明了。<br />    6.  新增Dependency Scope    <br />         这点也比较重要，有些用于test范围的包，可以不用加入依赖了<br />    7.  传递依赖，简化依赖管理<br />        这是最为方便的，可以省了很多配置。如a 依赖 b,b 依赖c  默认 a也会依赖 c。但是也会带来隐患，如版本冲突。不过maven 也已经考虑到了，可以使用exclusions来排除相应的重复依赖<br /><br /><b>介绍了那么多，现在切入正题，开始maven2 之旅：</b><br />首些下载需要的工具：<br />maven2: http://maven.apache.org/download.html 最主要的<br />maven-proxy：用来代理repository，使用本地库代替maven2的远程库<br />            http://maven-proxy.codehaus.org/<br />continuum：一个不错的持续整合工具，用于自动build。支持ant,maven<br />http://maven.apache.org/continuum/<br />svn:版本控制工具相信都已经配置了。<br />maven 用于eclipse的插件 ,在maven主站有下载，不错的插件。当然idea也有相应的插件<br />最后，http，服务器是必不可少的。用于内部开发使用。<br />可以使用apache ，或者jetty  http://www.mortbay.org/<br /><br />安装：<br />    安装maven2很简单，把下载来的maven包解开就行了。（目前我的配置都在win2003上，还没有应用于linux，所有所有的配置都针对windows).增加相应的环境变量m2_home=maven2的安装目录，不要忘了设置java_home的目录。另外在path中增加%m2_home%\bin;可以直接在命令行下面使用mvn。<br />其他工具的安装在后续的文章会介绍。<br /><br />开始第一个mvean2项目：<br />  mvn archetype:create -DgroupId=com.mycompany.app \<br />                   -DartifactId=my-app<br />  简单介绍一下 groupId相当于你的组织，如同org.springframework，会转化为相应得本地路径 artifactId，你主要的jar包名称，也就是你要打成的jar 名称。<br />编译应用资源<br />    mvn complile<br />        编译相应的jave 文件<br />编译测试类以及运行测试类<br />    mvn test<br />       运行测试类<br />如果只想编译test，执行<br />    mvn test-compile<br />打包和安装你的本地库<br />打包：<br />    mvn package<br />安装：<br />    mvn install<br />创建web site<br />    mvn site<br />清除所有输出<br />    mvn clean<br />创建相关的ide文件<br />    mvn idea:idea        或者    mvn eclipse:eclipse<br /><br />    顺便说一下，maven2 是有生命周期这一概念的，也就是说如果你执行package，相应的以前步骤，如compile,test等都会自动执行。<br />刚开始执行会比较慢，需要从maven2远程库中下载所有的文件到本地。如果你的本地没有相应的依赖包，则每次maven都会去远程下载，所以配置一个镜像库就比较重要了。<br />    另外介绍一下主要的参考资料：<br />    mavn2 主站：主要的pom和settings.xml参考资料<br />    </span>Better
                                Builds with Maven<span style="font-size: 14px; line-height: 30px;">     http://www.mergere.com/m2book_download.jsp<br />    不错的书，主要通过例子介绍。可惜都是E文的，花点时间还是值得的。<br />    下一个主题，会说一下maven2的主要配置。<br /><br /><br /></span><img src ="http://www.blogjava.net/zyl/aggbug/84972.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zyl/" target="_blank">布衣郎</a> 2006-12-02 10:46 <a href="http://www.blogjava.net/zyl/archive/2006/12/02/84972.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>maven2，终于可以上手了</title><link>http://www.blogjava.net/zyl/archive/2006/12/01/84706.html</link><dc:creator>布衣郎</dc:creator><author>布衣郎</author><pubDate>Thu, 30 Nov 2006 22:51:00 GMT</pubDate><guid>http://www.blogjava.net/zyl/archive/2006/12/01/84706.html</guid><wfw:comment>http://www.blogjava.net/zyl/comments/84706.html</wfw:comment><comments>http://www.blogjava.net/zyl/archive/2006/12/01/84706.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.blogjava.net/zyl/comments/commentRss/84706.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zyl/services/trackbacks/84706.html</trackback:ping><description><![CDATA[
		<span style="font-size: 14px; line-height: 30px;">    为了建立统一的类库，以及统一的项目管理入口。这两个礼拜来，一直看maven2的资料。刚开始以为maven2跟ant差不多，应该很快就能上手，可是越看越麻烦，可能我的E文水平太滥的缘故。<br />    不过总体来说，maven2从使用角度来说，应该还是复杂的，虽然命令很简单，可是要完全理解它的思路，还是需要花费一定时间的。哎，java就是够复杂，尤其在配置管理方面。不像别的语言那么好配置，整个发布都比较麻烦。<br />    不过，如果你真正学会使用maven2了，那么一切就变得简单起来了，一行命令mvn deploy，或者一个ant task，就让所有的事情都完成了。如果你想查看项目的进度，如果你想发布一个用户站点，那么mvn site可以很好的帮助你。然而更为方便的是，你不要到处去寻找那些类库了，到处的复制，粘贴，有时候还得为一个jar包的不同版本冲突忙上半天。有了maven，就有了统一的开发库，所有的jar都统一管理。不用再担心了。<br />    maven2带来的不仅是方便，对于整个项目的监控也是不错的。有了统一的入口，加上完善的report组件，可以清晰地看到项目的所有进展。再加上continuum的持续整合，能减少很多成本。<br />    <br /></span>
<img src ="http://www.blogjava.net/zyl/aggbug/84706.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zyl/" target="_blank">布衣郎</a> 2006-12-01 06:51 <a href="http://www.blogjava.net/zyl/archive/2006/12/01/84706.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>