Maven3的POM.xml元素说明详解

Maven3的POM.xml元素说明

POM代表项目对象模型。它是 Maven 中工作的基本单位,这是一个 XML 文件。它始终保存在该项目基本目录中的 pom.xml 文件。

POM 包含的项目是使用 Maven 来构建的,它用来包含各种配置信息。

 

POM 也包含了目标和插件。在执行任务或目标时,Maven 会使用当前目录中的 POM。它读取POM得到所需要的配置信息,然后执行目标。部分的配置可以在 POM 使用如下:

  • project dependencies
  • plugins
  • goals
  • build profiles
  • project version
  • developers
  • mailing list

创建一个POM之前,应该要先决定项目组(groupId),它的名字(artifactId)和版本,因为这些属性在项目仓库是唯一标识的。

POM的例子

<project xmlns="http://maven.apache.org/POM/4.0.0"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
   http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0modelVersion>
   <groupId>com.yiibai.project-groupgroupId>
   <artifactId>projectartifactId>
   <version>1.0version>
<project>
XML

要注意的是,每个项目只有一个POM文件。

  • 所有的 POM 文件要项目元素必须有三个必填字段: groupIdartifactIdversion
  • 在库中的项目符号是:groupId:artifactId:version
  • pom.xml 的根元素是 project,它有三个主要的子节点。
节点 描述
groupId 这是项目组的编号,这在组织或项目中通常是独一无二的。 例如,一家银行集团com.company.bank拥有所有银行相关项目。
artifactId 这是项目的ID。这通常是项目的名称。 例如,consumer-banking。 除了groupId之外,artifactId还定义了artifact在存储库中的位置。
version 这是项目的版本。与groupId一起使用,artifact在存储库中用于将版本彼此分离。 例如:com.company.bank:consumer-banking:1.0com.company.bank:consumer-banking:1.1

超级POM

所有的POM继承自父类(尽管明确界定)。这个基础的 POM 被称为超级 POM,并包含继承默认值。 Maven使用有效的POM(超级POM加项目配置的配置)执行有关目标。它可以帮助开发人员指定最低配置的详细信息写在 pom.xml 中。虽然配置可以很容易被覆盖。 一个简单的方法来看看超级POM的默认配置,通过运行下面的命令:mvn help:effective-pom 创建一个 pom.xml 。 在下面的例子中,已经创建了一个 pom.xmlC:\MVN\ 项目文件夹中。 现在,打开命令控制台,进入包含 pom.xml 文件夹并执行以下 mvn 命令。

C:\MVN\project> mvn help:effective-pom
Shell

Maven将开始处理,并显示有效的 effective-pom 。

[INFO] Scanning for projects...
[INFO] Searching repository for plugin with prefix: 'help'.
[INFO] ------------------------------------------------------------------------
[INFO] Building Unnamed - com.companyname.project-group:project-name:jar:1.0
[INFO]    task-segment: [help:effective-pom] (aggregator-style)
[INFO] ------------------------------------------------------------------------
[INFO] [help:effective-pom {execution: default-cli}]
[INFO]

.....

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: < 1 second
[INFO] Finished at: Thu Jul 05 11:41:51 IST 2012
[INFO] Final Memory: 6M/15M
[INFO] ------------------------------------------------------------------------
Shell

在控制台显示结果:有效POM,继承,插值,应用配置文件。















  4.0.0
  com.companyname.project-group
  project
  1.0
  
    C:\MVN\project\src\main\java
    src/main/scripts
    C:\MVN\project\src\test\java
    C:\MVN\project\target\classes
    C:\MVN\project\target\test-classes
    
      
        resource-0
        C:\MVN\project\src\main\resources
      
    
    
      
        resource-1
        C:\MVN\project\src\test\resources
      
    
    C:\MVN\project\target
    project-1.0
    
      
        
          maven-antrun-plugin
          1.3
        
        
          maven-assembly-plugin
          2.2-beta-2
        
        
          maven-clean-plugin
          2.2
        
        
          maven-compiler-plugin
          2.0.2         
        
          maven-dependency-plugin
          2.0
        
        
          maven-deploy-plugin
          2.4
        
        
          maven-ear-plugin
          2.3.1
        
        
          maven-ejb-plugin
          2.1
        
        
          maven-install-plugin
          2.2
        
        
          maven-jar-plugin
          2.2
        
        
          maven-javadoc-plugin
          2.5
        
        
          maven-plugin-plugin
          2.4.3
        
        
          maven-rar-plugin
          2.2
        
        
          maven-release-plugin
          2.0-beta-8
        
        
          maven-resources-plugin
          2.3
        
        
          maven-site-plugin
          2.0-beta-7
        
        
          maven-source-plugin
          2.0.4
        
        
          maven-surefire-plugin
          2.4.3
        
        
          maven-war-plugin
          2.1-alpha-2
        
      
    
    

      
        maven-help-plugin
        2.1.1
      
    
  
  
    
      
        false
      
      central
      Maven Repository Switchboard
      http://repo1.maven.org/maven2
    
  
  
    
      
        never
      
      
        false
      
      central
      Maven Plugin Repository
      http://repo1.maven.org/maven2
    
  
  
    C:\MVN\project\target/site
  

Shell

在上面的pom.xml 中,可以看到默认的项目源文件夹结构,输出目录,插件,资料库,报表目录,Maven将使用它们来执行预期的目标。

Maven pom.xml 无须手动写入。

Maven提供了大量的原型插件以创建项目,包括项目结构 和 pom.xml

 


  4.0.0

 
  ...
  ...
  ...
  ...

  ...

  ...
  ...
  ...
  ...
  ...
  ...

 
  ...
  ...

 
  ...
  ...
  ...
  ...
  ...
  ...
  ...
  ...

 
  ...
  ...
  ... 
  ...
  ...
  ...
  ...
  ...
  ...

 

基本内容:

POM包括了所有的项目信息

groupId:项目或者组织的唯一标志,并且配置时生成路径也是由此生成,如org.myproject.mojo生成的相对路径为:/org/myproject/mojo

artifactId:项目的通用名称

version:项目的版本

packaging:打包机制,如pom,jar,maven-plugin,ejb,war,ear,rar,par

name:用户描述项目的名称,无关紧要的东西,可选

url:应该是只是写明开发团队的网站,无关紧要,可选

classifer:分类

其中groupId,artifactId,version,packaging这四项组成了项目的唯一坐标。一般情况下,前面三项就可以组成项目的唯一坐标了。

 

POM关系:主要为依赖,继承,合成

依赖关系:


   
      junit
      junit
      4.0
      jar
      test
      true
   

 

    

        com.alibaba.china.shared

        alibaba.apollo.webx

        2.5.0

        

          

            org.slf4j.slf4j-api

            com.alibaba.external

          

          ....

        

......

其中groupId, artifactId, version这三个组合标示依赖的具体工程,而且 这个依赖工程必需是maven中心包管理范围内的,如果碰上非开源包,maven支持不了这个包,那么则有有三种 方法处理:

1.本地安装这个插件install plugin

例如:mvn install:intall-file -Dfile=non-maven-proj.jar -DgroupId=som.group -DartifactId=non-maven-proj -Dversion=1

2.创建自己的repositories并且部署这个包,使用类似上面的deploy:deploy-file命令,

3.设置scope为system,并且指定系统路径。

 

dependency里属性介绍:

type:默认为jar类型,常用的类型有:jar,ejb-client,test-jar...,可设置plugins中的extensions值为true后在增加 新的类型,

scope:是用来指定当前包的依赖范围,maven的依赖范围

optional:设置指依赖是否可选,默认为false,即子项目默认都继承,为true,则子项目必需显示的引入,与dependencyManagement里定义的依赖类似 。

exclusions:如果X需要A,A包含B依赖,那么X可以声明不要B依赖,只要在exclusions中声明exclusion.

exclusion:是将B从依赖树中删除,如上配置,alibaba.apollo.webx不想使用com.alibaba.external  ,但是alibaba.apollo.webx是集成了com.alibaba.external,r所以就需要排除掉.

 

如果一个工程是parent或者aggregation(即mutil-module的)的,那么必须在packing赋值为pom,child工程从parent继承的包括:dependencies,developers,contributors,plugin lists,reports lists,plugin execution with matching ids,plugin configuration

parent的使用方法如下:

 
    org.codehaus.mojo 
    my-parent 
    2.0 
    ../my-parent 
 

relativePath是可选的,maven会首先搜索这个地址,在搜索本地远程repositories之前.

 

dependencyManagement:是用于帮助管理chidren的dependencies的。例如如果parent使用dependencyManagement定义了一个dependencyon junit:junit4.0,那么 它的children就可以只引用 groupId和artifactId,而version就可以通过parent来设置,这样的好处就是可以集中管理 依赖的详情

 

modules:对于多模块的project,outer-module没有必需考虑inner-module的dependencies,当列出modules的时候,modules的顺序是不重要的,因为maven会自动根据依赖关系来拓扑排序,

modules例子如下 :

my-project

other-project

 

properties:是为pom定义一些常量,在pom中的其它地方可以直接引用。

定义方式如下:

 

      UTF-8

      1.5

      1.5

使用方式 如下 :

${file.encoding}

 

还可以使用project.xx引用pom里定义的其它属性:如$(project.version} 

 

build设置:

defaultGoal:默认的目标,必须跟命令行上的参数相同,如:jar:jar,或者与时期parse相同,例如install

directory:指定build target目标的目录,默认为$(basedir}/target,即项目根目录下的target

finalName:指定去掉后缀的工程名字,例如:默认为${artifactId}-${version}

filters:用于定义指定filter属性的位置,例如filter元素赋值filters/filter1.properties,那么这个文件里面就可以定义name=value对,这个name=value对的值就可以在工程pom中通过${name}引用,默认的filter目录是${basedir}/src/main/fiters/

resources:描述工程中资源的位置 

 

 
        META-INF/plexus 
        false 
        ${basedir}/src/main/plexus 
         
          configuration.xml 
       
 
         
          **/*.properties 
       
 
     

 

targetPath:指定build资源到哪个目录,默认是base directory

filtering:指定是否将filter文件(即上面说的filters里定义的*.property文件)的变量值在这个resource文件有效,例如上面就指定那些变量值在configuration文件无效。

directory:指定属性文件的目录,build的过程需要找到它,并且将其放到targetPath下,默认的directory是${basedir}/src/main/resources

includes:指定包含文件的patterns,符合样式并且在directory目录下的文件将会包含进project的资源文件。

excludes:指定不包含在内的patterns,如果inclues与excludes有冲突,那么excludes胜利,那些符合冲突的样式的文件是不会包含进来的。

testResources:这个模块包含测试资源元素,其内容定义与resources类似,不同的一点是默认的测试资源路径是${basedir}/src/test/resources,测试资源是不部署的。

 

plugins配置:

 
        org.apache.maven.plugins 
        maven-jar-plugin 
        2.0 
        false 
        true 
         
          test 
       
 
        ... 
        ... 
     

extensions:true or false, 决定是否要load这个plugin的extensions,默认为true.

inherited:是否让子pom继承,ture or false 默认为true.

configuration:通常用于私有不开源的plugin,不能够详细了解plugin的内部工作原理,但使plugin满足的properties

dependencies:与pom基础的dependencies的结构和功能都相同,只是plugin的dependencies用于plugin,而pom的denpendencies用于项目本身。在plugin的dependencies主要用于改变plugin原来的dependencies,例如排除一些用不到的dependency或者修改dependency的版本等,详细请看pom的denpendencies.

executions:plugin也有很多个目标,每个目标具有不同的配置,executions就是设定plugin的目标,

 
            echodir 
             
              run 
           
 
            verify 
            false 
             
               
                Build Dir: ${project.build.directory} 
             
 
           
 
         
 

id:标识符

goals:里面列出一系列的goals元素,例如上面的run goal

phase:声明goals执行的时期,例如:verify

inherited:是否传递execution到子pom里。

configuration:设置execution下列表的goals的设置,而不是plugin所有的goals的设置

 

pluginManagement配置:

pluginManagement的作用类似于denpendencyManagement,只是denpendencyManagement是用于管理项目jar包依赖,pluginManagement是用于管理plugin。与pom build里的plugins区别是,这里的plugin是列出来,然后让子pom来决定是否引用。

例如:

 

       
         
          org.apache.maven.plugins 
          maven-jar-plugin 
          2.2 
           
             
              pre-process-classes 
              compile 
               
                jar 
             
 
               
                pre-process 
             
 
           
 
         
 
       
 
     
 
     
子pom引用方法: 
在pom的build里的plugins引用: 
     
       
        org.apache.maven.plugins 
        maven-jar-plugin 
     
 
   

 

build里的directories:

 

${basedir}/src/main/java 
    ${basedir}/src/main/scripts 
    ${basedir}/src/test/java 
    ${basedir}/target/classes 
    ${basedir}/target/test-classes

这几个元素只在parent build element里面定义,他们设置多种路径结构,他们并不在profile里,所以不能通过profile来修改

 

build 里面的Extensions: 
它们是一系列build过程中要使用的产品,他们会包含在running bulid‘s classpath里面。他们可以开启extensions,也可以通过提供条件来激活plugins。简单来讲,extensions是在build过程被激活的产品 
     
       
        org.apache.maven.wagon 
        wagon-ftp 
        1.0-alpha-3 
     
 
   
 

 

reporting设置:

reporting包含site生成阶段的一些元素,某些maven plugin可以生成reports并且在reporting下配置。例如javadoc,maven site等,在reporting下配置的report plugin的方法与build几乎一样,最不同的是build的plugin goals在executions下设置,而reporting的configures goals在reporttest。

excludeDefaults:是否排除site generator默认产生的reports

outputDirectory,默认的dir变成:${basedir}/target/site

report sets:设置execution goals,相当于build里面的executions,不同的是不能够bind a report to another phase,只能够是site

 
     
       
        ... 
         
           
            sunlink 
             
              javadoc 
           
 
            true 
             
               
                http://java.sun.com/j2se/1.5.0/docs/api/ 
             
 
           
 
         
 
       
 
     
 
   
 
 
 
reporting里面的厄reportSets和build里面的executions的作用都是控制pom的不同粒度去控制build的过程,我们不单要配置plugins,还要配置那些plugins单独的goals。

 

更多项目信息:

name:项目除了artifactId外,可以定义多个名称
description: 项目描述
url: 项目url
inceptionYear:创始年份

 

Licenses

 
    Apache 2
    http://www.apache.org/licenses/LICENSE-2.0.txt
    repo
    A business-friendly OSS license
 

列出本工程直接的licenses,而不要列出dependencies的licenses

 

配置组织信息:
 
    Codehaus Mojo
    http://mojo.codehaus.org
 

 

很多工程都受到某些组织运行,这里设置基本信息

 

配置开发者信息:

例如:一个开发者可以有多个roles,properties是 

   
      eric
      Eric
      [email protected]
      http://eric.propellors.net
      Codehaus
      http://mojo.codehaus.org
     
        architect
        developer
     

      -6
     
        http://tinyurl.com/prv4t
     

   

 

 

环境设置:

issueManagement:bug跟踪管理系统,定义defect tracking system缺陷跟踪系统,比如有(bugzilla,testtrack,clearquest等).

例如:

   
    Bugzilla 
    http://127.0.0.1/bugzilla/ 
 
 

 

仓库:

Repositories:pom里面的仓库与setting.xml里的仓库功能是一样的。主要的区别在于,pom里的仓库是个性化的。比如一家大公司里的setting文件是公用 的,所有项目都用一个setting文件,但各个子项目却会引用不同的第三方库,所以就需要在pom里设置自己需要的仓库地址。

repositories:要成为maven2的repository artifact,必须具有pom文件在$BASE_REPO/groupId/artifactId/version/artifactId-version.pom 
BASE_REPO可以是本地,也可以是远程的。repository元素就是声明那些去查找的repositories 
默认的central Maven repository在http://repo1.maven.org/maven2/

 
     
       
        false 
        always 
        warn 
     
 
       
        true 
        never 
        fail 
     
 
      codehausSnapshots 
      Codehaus Snapshots 
      http://snapshots.maven.codehaus.org/maven2 
      default 
   
 
 
 

release和snapshots:是artifact的两种policies,pom可以选择那种政策有效。 
enable:本别指定两种类型是否可用,true or false 
updatePolicy:说明更新发生的频率always 或者 never 或者 daily(默认的)或者 interval:X(X是分钟数) 

checksumPolicy:当Maven的部署文件到仓库中,它也部署了相应的校验和文件。您可以选择忽略,失败,或缺少或不正确的校验和警告。

layout:maven1.x与maven2有不同的layout,所以可以声明为default或者是legacy(遗留方式maven1.x)。

 

插件仓库:

pluginRepositories:与Repositories具有类似的结构,只是Repositories是dependencies的home,而这个是plugins 的home。

 

分发管理:

distributionManagement :管理distribution和supporting files。 

downloadUrl:是其他项目为了抓取本项目的pom’s artifact而指定的url,就是说告诉pom upload的地址也就是别人可以下载的地址。 
status:这里的状态不要受到我们的设置,maven会自动设置project的状态,有效的值:none:没有声明状态,pom默认的;converted:本project是管理员从原先的maven版本convert到maven2的;partner:以前叫做synched,意思是与partner repository已经进行了同步;deployed:至今为止最经常的状态,意思是制品是从maven2 instance部署的,人工在命令行deploy的就会得到这个;verified:本制品已经经过验证,也就是已经定下来了最终版。 
repository:声明deploy过程中current project会如何变成repository,说明部署到repository的信息。 
     
      false 
      corp1 
      Corporate Repository 
      scp://repo1/maven2 
      default 
   
 
     
      true 
      propSnap 
      Propellors Snapshots 
      sftp://propellers.net/maven 
      legacy 
   
 
id, name::唯一性的id,和可读性的name 
uniqueVersion:指定是否产生一个唯一性的version number还是使用address里的其中version部分。true or false 
url:说明location和transport protocol 
layout:default或者legacy

 

profiles:pom4.0的一个新特性就是具有根据environment来修改设置的能力

它包含可选的activation(profile的触发器)和一系列的changes。例如test过程可能会指向不同的数据库(相对最终的deployment)或者不同的dependencies或者不同的repositories,并且是根据不同的JDK来改变的。那么结构如下: 

   
     
      test 
      ... 
      ... 
      ... 
      ... 
      ... 
      ... 
      ... 
      ... 
      ... 
   
 
 
 
Activation: 
触发这个profile的条件配置如下例:(只需要其中一个成立就可以激活profile,如果第一个条件满足了,那么后面就不会在进行匹配。 
     
      test 
       
        false 
        1.5 
         
          Windows XP 
          Windows 
          x86 
          5.1.2600 
       
 
         
          mavenVersion 
          2.0.3 
       
 
         
          ${basedir}/file2.properties 
          ${basedir}/file1.properties 
       
 
     
 

 

激活profile的方法有多个:setting文件的activeProfile元素明确指定激活的profile的ID,在命令行上明确激活Profile用-P flag 参数 
查看某个build会激活的profile列表可以用:mvn help:active-profiles 

 

 

 

下面分段讲解。

 

1. 基本信息

 

modelVersion Maven模块版本,目前我们一般都取值4.0.0
groupId 整个系统的名称。
artifactId 子模块名称。
packaging 打包类型,可取值:jar,war等等,这个配置用于package的phase,具体可以参见package运行的时候启动的plugin,后面有机会我们会讲述如何配置打包的插件。

 

2. dependencies

依赖关系。实际上pom之间存在好三种关系:继承、依赖、聚合。我们先讲依赖,这也是最重要的关系。

 

groupId 依赖项的groupId
artifactId 依赖项的artifactId
version 依赖项的版本
scope 依赖项的适用范围:
  • compile,缺省值,适用于所有阶段,会随着项目一起发布。
  • provided,类似compile,期望JDK、容器或使用者会提供这个依赖。如servlet.jar。
  • runtime,只在运行时使用,如JDBC驱动,适用运行和测试阶段。
  • test,只在测试时使用,用于编译和运行测试代码。不会随项目发布。
  • system,类似provided,需要显式提供包含依赖的jar,Maven不会在Repository中查找它。
之前例子里的junit就只用在了test中。
exclusions 排除项目中的依赖冲突时使用。

 

2.1 关于排除依赖冲突

我们可能经常会遇到这样一个问题:我们的项目有两个依赖项:A & B,而且A和B同时依赖了C,但不是同一个版本。那么我们怎么办呢?

 

2.1.1 添加检查插件

复制代码
1 <reporting>
2         <plugins>
3             <plugin>
4                 <groupId>org.apache.maven.pluginsgroupId>
5                 <artifactId>maven-project-info-reports-pluginartifactId>
6             plugin>
7         plugins>
8     reporting>
复制代码


然后运行:mvn project-info-reports:dependencies,来查看依赖项报告。

 

2.1.2 去除依赖项

如果我们需要在某个dependency中去除某个依赖项,直接这样即可:

复制代码
 1 
 2         <dependency>
 3             <groupId>org.apache.strutsgroupId>
 4             <artifactId>struts2-coreartifactId>
 5             <version>${struts.version}version>
 6             <exclusions>
 7                 <exclusion>
 8                     <groupId>org.freemarkergroupId>
 9                     <artifactId>freemarkerartifactId>
10                 exclusion>
11             exclusions>
12         dependency>
复制代码

3. 继承

我的repository下面有个例子就直接拿来用了:

复制代码
1 <modelVersion>4.0.0modelVersion>
2   <parent>
3     <groupId>com.thoughtworks.xstreamgroupId>
4     <artifactId>xstream-parentartifactId>
5     <version>1.4.3version>
6   parent>
7   <artifactId>xstreamartifactId>
8   <packaging>jarpackaging>
9   <name>XStream Corename>
复制代码

其中的parent表示父pom是com.thoughtworks.xstream的xstream-parent的1.4.3版本。继承关系比较简单,这里不做过多介绍。

 

4. 聚合

我们可以通过一个大的项目来整合各个小的模块:

1 <modules>
2         <module>my-appmodule>
3     modules>

5. 属性

属性表述类似于EL表达式,ANT中也同样有,所以我们的properties字段可以这样使用:

1         
2         <dependency>
3             <groupId>mysqlgroupId>
4             <artifactId>mysql-connector-javaartifactId>
5             <version>${mysql.version}version>
6         dependency>

6. 构建

6.1 plugin

Plugin的配置如下:

复制代码
 1 <pluginManagement>
 2             <plugins>
 3                 <plugin>
 4                     <groupId>org.apache.tomcat.mavengroupId>
 5                     <artifactId>tomcat7-maven-pluginartifactId>
 6                     <version>2.1version>
 7                     <configuration>
 8                         <tomcat-url>http://localhost:8080/manager/htmltomcat-url>
 9                         <server>tomcat_localtestserver>
10                     configuration>
11                 plugin>
12             plugins>
13         pluginManagement>
复制代码

我们可以看到同样要哟偶groupId、artifactId、version还有一些配置参数。

 

6.2 resource

指定你在Build时需要的资源文件:

复制代码
 1 <resources>
 2             <resource>
 3                 <targetPath>WEB-INF/resourcetargetPath>
 4                 
 5                 <filtering>falsefiltering>
 6                 <directory>${basedir}/src/test/resourcesdirectory>
 7                 <includes>
 8                     <include>include.xmlinclude>
 9                 includes>
10                 <excludes>
11                     <exclude>exclude.xmlexclude>
12                 excludes>
13             resource>
14         resources>
复制代码

 

还有更全说明

 

 

 

 

 

 

 

 

 

 

 

 

 

 4.0.0  

 

 asia.banseon  

 

 banseon-maven2  

 

 jar  

 

 1.0-SNAPSHOT  

 

 banseon-maven  

 

 http://www.baidu.com/banseon  

 

 A maven project to study maven.  

 

 

 

 

 

 

 

 

 jira  

 

 http://jira.baidu.com/banseon  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Demo [email protected] [email protected] [email protected] http:/hi.baidu.com/banseon/demo/dev/ HELLO WORLD banseon [email protected] Project Manager Architect demo http://hi.baidu.com/banseon No -5 Apache 2 http://www.baidu.com/banseon/LICENSE-2.0.txt repo A business-friendly OSS license scm:svn:http://svn.baidu.com/banseon/maven/banseon/banseon-maven2-trunk(dao-trunk) scm:svn:http://svn.baidu.com/banseon/maven/banseon/dao-trunk http://svn.baidu.com/banseon demo http://www.baidu.com/banseon Windows XP Windows x86 5.1.2600 mavenVersion 2.0.3 /usr/local/hudson/hudson-home/jobs/maven-guide-zh-to-production/workspace/ /usr/local/hudson/hudson-home/jobs/maven-guide-zh-to-production/workspace/ banseon-repository-proxy banseon-repository-proxy http://192.168.1.169:9999/repository/ default org.apache.maven maven-artifact 3.8.1 jar test spring-core org.springframework true banseon-maven2 banseon maven2 file://${basedir}/target/deploy banseon-maven2 Banseon-maven2 Snapshot Repository scp://svn.baidu.com/banseon:/usr/local/maven-snapshot banseon-site business api website scp://svn.baidu.com/banseon:/var/www/localhost/banseon-web

 

 

你可能感兴趣的:(技术简介,java,Maven3,POM.xml,POM,groupId,artifactId)