3

我可以将 amvn 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>
4

3 回答 3

4

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

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

并使用仅 POM 项目将样板文件排除在项目 POM 之外:https ://books.sonatype.com/mvnref-book/reference/pom-relationships-sect-pom-best-practice.html

于 2013-03-19T12:41:54.360 回答
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 父级制作模块

于 2013-03-19T12:43:35.280 回答
0

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

<packaging>pom</packaging>

具有类型的项目pom不需要srcortest目录,只需要普通的 pom 文件就足够了。

推荐大家使用Maven Release Plugin发布和部署父pom文件:http ://maven.apache.org/maven-release/maven-release-plugin/

于 2013-03-19T12:43:07.487 回答