2013-03-19 247 views
2

我可以使用mvn deploy作为单亲母公司吗?这个pom.xml文件将成为我所有项目的父类。我能否部署这个pom.xml文件而没有其他工件?公司范围内的母公司pom

如果我使用这个作为我的公司广泛的POM,我必须包括模块标签。

<?xml version="1.0" encoding="UTF-8"?> 
<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/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>onestopspot</groupId> 
    <artifactId>parent</artifactId> 
    <version>1.0.0-SNAPSHOT</version> 
    <packaging>pom</packaging> 
    <name>OneStopSpot - Parent</name> 
    <description>Android application for OneStopspot</description> 
    <distributionManagement> 
     <repository> 
      <id>confiz-repo</id> 
      <url>http://10.10.10.230:8081/nexus/content/repositories/snapshots/</url> 
      <releases> 
       <enabled>true</enabled> 
      </releases> 
      <snapshots> 
       <enabled>true</enabled> 
       <updatePolicy>always</updatePolicy> 
      </snapshots> 
     </repository> 
    </distributionManagement> 
    <dependencyManagement> 
     <dependencies> 
      <dependency> 
     <groupId>com.google.android</groupId> 
     <artifactId>android</artifactId> 
     <version>4.1.1.4</version> 
     <scope>provided</scope> 
     </dependency> 
      <dependency> 
       <groupId>com.google.android</groupId> 
       <artifactId>android-test</artifactId> 
       <version>2.3.3</version> 
      </dependency> 
     </dependencies> 
    </dependencyManagement> 
    <build> 
     <pluginManagement> 
      <plugins> 
       <plugin> 
        <groupId>com.jayway.maven.plugins.android.generation2</groupId> 
        <artifactId>android-maven-plugin</artifactId> 
        <version>3.5.1</version> 
        <configuration> 
         <sdk> 
          <platform>10</platform> 
         </sdk> 
         <undeployBeforeDeploy>true</undeployBeforeDeploy> 
        </configuration> 
        <extensions>true</extensions> 
       </plugin> 
      </plugins> 
     </pluginManagement> 
    </build> 
    <modules> 
     <module>api_library</module> 
     <module>instrumentation</module> 
    </modules> 
</project> 

回答

0

是的,这是可能做到这一点,这是一个普遍的做法。该packaging类型应该在这种情况下被设置为pom

<packaging>pom</packaging> 

pom A类项目不需要srctest目录,只是简单的POM文件是不够的。

我推荐你使用Maven的发布插件释放和部署父POM文件:http://maven.apache.org/maven-release/maven-release-plugin/

+0

父pom文件通常不包含任何模块,它只是pom文件。不要混淆父pom文件和多模块项目的根文件夹,它们不必是相同的。特别是当你试图创建公司范围的父母团队时。 – nwinkler 2013-03-19 13:16:54

1

是肯定它是可能的。只需将你的包装定义为pom即可使用。

请注意groupId和版本继承。如果你不想在多模块项目中继承它,你只需重写它。

下面是一个例子:

公司广父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/maven-v4_0_0.xsd"> 

    <modelVersion>4.0.0</modelVersion> 
    <groupId>de.mycompany.parent</groupId> 
    <artifactId>parent-pom</artifactId> 
    <version>1.0</version> 
    <packaging>pom</packaging> 


</project> 

多模块项目父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/maven-v4_0_0.xsd"> 

    <modelVersion>4.0.0</modelVersion> 
    <parent> 
     <groupId>de.mycompany.parent</groupId> 
     <artifactId>parent-pom</artifactId> 
     <version>1.0</version> 
    </parent> 
    <groupId>my-overridden-groupId</groupId> 
    <artifactId>my-overridden-artifactId</artifactId> 
    <version>1.1</version> 
    <packaging>pom</packaging> 

    <modules> 
     <module>myOtherModule</module> 
    </modules> 

</project> 

在此之后,你可以去一个,使模块与POM父以上