我是否可以使用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>
答案 0 :(得分:3)
是的,实际上这是减少项目POM中样板量的标准做法。
并且使用仅限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
的项目不需要src
或test
目录,只需普通的pom文件即可。
我建议您使用 Maven Release Plugin 来发布和部署父pom文件:http://maven.apache.org/maven-release/maven-release-plugin/