Maven Parent POM

时间:2013-01-18 14:09:21

标签: maven pom.xml parent-pom

我是Maven的新手,最近安装了nexus。现在我想创建一个父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>1.0.0</modelVersion>
    <groupId>com.mycomp</groupId>
    <artifactId>parent-pom-android</artifactId>
    <version>1.0.0-SNAPSHOT</version>
    <packaging>apk</packaging>
    <name>Android Parent POM</name>

    <repositories>
        <repository>
            <id>nexus-repo</id>
            <url>http://10.10.10.230:8081/nexus/content/groups/public</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>
                <updatePolicy>always</updatePolicy>
            </snapshots>
        </repository>
    </repositories>
    <pluginRepositories>
        <pluginRepository>
            <id>nexus-repo</id>
            <name>confiz-repo</name>
            <url>http://10.10.10.230:8081/nexus/content/groups/public/</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </pluginRepository>
    </pluginRepositories>
 </project>

现在我在哪里放置这个POM文件,以便我的其他POM文件可以继承它?

4 个答案:

答案 0 :(得分:10)

如果你将这个父pom放在一个名为android的文件夹中,那么项目将在同一个文件夹中使用它。

  • Android
  • 的pom.xml
  • 机器人项目-1
    • 的pom.xml

项目pom.xml然后可以通过将它放在pom.xml的顶部来使用父pom:

<parent>
    <groupId>parent.group</groupId>
    <artifactId>parent.artifact</artifactId>
    <version>${version.number}</version>
    <relativePath>../</relativePath>
</parent>

您可以在以后扩展此架构,如下所示:

  • 移动
    • 的pom.xml
    • 的Android
      • 的pom.xml
      • 机器人项目-1
      • 机器人项目-2
    • iPhone
      • 的pom.xml
      • iphone项目-1

这允许您为Android项目定义公共配置,为iphone项目定义公共配置以及为所有移动项目定义公共配置。等等

答案 1 :(得分:4)

您必须将项目部署到内部Maven存储库。为此,首先需要配置Maven存储库服务器(我建议使用Apache Archiva),然后将pom.xml和settings.xml指向服务器:http://archiva.apache.org/docs/1.4-M3/userguide/deploy.html

部署之后,您可以指出贵公司的所有项目都将该pom用作父pom。您可以使用相同的策略来创建内部项目依赖项。这在continuous integration环境中非常顺利。

答案 2 :(得分:1)

对于每个儿童pom,请放置对父母pom的引用。

<parent>
    <groupId>com.mycomp</groupId>
    <artifactId>parent-pom-android</artifactId>
    <version>1.0.0-SNAPSHOT</version>
    <relativePath>relative/path/to/parent/pom</relativePath>
</parent>

relativePath从子pom开始计算

答案 3 :(得分:1)

包装类型应为pom而非apk