2013-03-19 4 views
2

하나의 부모 pom에 mvn deploy을 사용할 수 있습니까? 이 pom.xml 파일은 모든 프로젝트의 상위 폴더입니다. 이 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

예, 사실 이것은 프로젝트 POM의 상용구 양을 줄이기위한 표준 사례입니다. http://www.sonatype.com/books/mvnref-book/reference/pom-relationships-sect-project-relationships.html#pom-relationships-sect-project-inheritance

및 프로젝트 리딩에서 상용구를 유지하기 위해 POM 전용 프로젝트를 사용 : 부모 리딩에 대한 자세한 내용은

http://www.sonatype.com/books/mvnref-book/reference/pom-relationships-sect-pom-best-practice.html

0

네, 그것은 일반적인 관행 있다고 할 수 있습니다. packaging 유형이 경우 pom로 설정해야합니다 : 유형 pom

<packaging>pom</packaging> 

프로젝트는 src 또는 test 디렉토리를 필요로하지 않는, 그냥 일반 치어 파일은 충분하다. 그것이 가능 예 확인 http://maven.apache.org/maven-release/maven-release-plugin/

+0

상위 pom 파일은 일반적으로 모듈을 포함하지 않으며 단지 pom 파일입니다. 상위 pom 파일을 다중 모듈 프로젝트의 루트 pom과 혼동하지 마십시오. 동일하지 않아도됩니다. 특히 회사 전체의 부모 POM을 만들려고 할 때가 아닙니다. – nwinkler

1

:

난 당신이 해제하고 부모 치어 파일을 배포 메이븐 출시 플러그인를 사용하는 것이 좋습니다. 패키지를 퐁으로 정의하면 제대로 작동합니다.

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> 

하나를 가서 치어 부모 모듈을 만들 수 있습니다 그 후 여기에

은 예입니다 위

관련 문제