公司广泛的父母pom

时间:2013-03-19 12:37:46

标签: java maven

我是否可以使用mvn deploy作为单亲pom?这个pom.xml文件将是我所有项目的父pom。我是否可以仅部署此pom.xml文件而不部署其他工件?

如果我将它用作我公司的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>

3 个答案:

答案 0 :(得分:3)

是的,实际上这是减少项目POM中样板量的标准做法。

有关父POM的更多信息:http://www.sonatype.com/books/mvnref-book/reference/pom-relationships-sect-project-relationships.html#pom-relationships-sect-project-inheritance

并且使用仅限POM的项目来保留样板POM中的样板:http://www.sonatype.com/books/mvnref-book/reference/pom-relationships-sect-pom-best-practice.html

答案 1 :(得分:1)

确定有可能。只需将您的包装定义为pom即可。

了解groupId和版本继承。如果你不想像在多模块项目中那样继承它,你只需要覆盖它。

以下是一个例子:

公司范围内的父母:

 <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>

Multimodule project parent 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 parent创建一个模块

答案 2 :(得分:0)

是的,可以这样做,这是一种常见的做法。在这种情况下,packaging类型应设置为pom

<packaging>pom</packaging>

类型为pom的项目不需要srctest目录,只需普通的pom文件即可。

我建议您使用 Maven Release Plugin 来发布和部署父pom文件:http://maven.apache.org/maven-release/maven-release-plugin/