2011-12-07 3 views
6

다음 프로젝트 스 니펫과 동일한 구조로 프로젝트를 만들었습니다.Maven의 부모 태그의 의미

|-- modP 

| |-- pom.xml 

| |-- src 

| | |-- main 

| |  `-- java 

| |   `-- com 

| |    `-- myorg 

| |     `-- myapp 

| |      `-- modP 

| |       `-- AppP.java 

|-- modC1 

| |-- pom.xml 

| |-- src 

| | |-- main 

| |  `-- java 

| |   `-- com 

| |    `-- myorg 

| |     `-- myapp 

| |      `-- modC 

| |       `-- AppM.java 

|-- modC2 

| |-- pom.xml 

| |-- src 

     |-- main 

      `-- java 

       `-- com 

        `-- myorg 

         `-- myapp 

          `-- modC2 

           `-- AppN.java 

modP 용의 pom.xml 내이다 :

<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 /xsd/maven-4.0.0.xsd"> 

    <modelVersion>4.0.0</modelVersion> 



    <groupId>com.myorg.myapp</groupId> 

    <artifactId>modP</artifactId> 

    <version>0.0.1-SNAPSHOT</version> 

    <packaging>pom</packaging> 



    <name>modP</name> 

    <url>http://maven.apache.org</url> 



    <properties> 

    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 

    </properties> 



    <dependencies> 

    <dependency> 

     <groupId>junit</groupId> 

     <artifactId>junit</artifactId> 

     <version>3.8.1</version> 

      <scope>test</scope> 

    </dependency> 

    </dependencies> 

</project> 

C1 용의 pom.xml 내이다 :

<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 /xsd/maven-4.0.0.xsd"> 

<parent> 

    <artifactId>modP</artifactId> 

    <groupId>com.myorg.myapp</groupId> 

    <version>0.0.1-SNAPSHOT</version> 

    <relativePath>.../modP/pom.xml</relativePath> 

</parent> 

<modelVersion>4.0.0</modelVersion> 



    <groupId>com.myorg.myapp</groupId> 

    <artifactId>modC1</artifactId> 

    <packaging>jar</packaging> 



    <name>modC1</name> 

    <url>http://maven.apache.org</url> 

</project> 

C2에서의 pom.xml이다 :

<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 /xsd/maven-4.0.0.xsd"> 

<parent> 

    <artifactId>modP</artifactId> 

    <groupId>com.myorg.myapp</groupId> 

    <version>0.0.1-SNAPSHOT</version> 

    <relativePath>.../modP/pom.xml</relativePath> 

</parent> 

<modelVersion>4.0.0</modelVersion> 



    <groupId>com.myorg.myapp</groupId> 

    <artifactId>modC2</artifactId> 

    <packaging>jar</packaging> 



    <name>modC2</name> 

    <url>http://maven.apache.org</url> 

</project> 

내 질문에 그러한 구성 참조 AppP.jav를 사용할 수 있습니까? a는 AppC1.java의 ModP에서, AppC2.java는 ModC1과 ModC2에 있습니다.

나는 이것을 시도하고 이것이 작동하지 않는 것처럼 보입니다. pom.xml에서 상위 태그의 의미를 잘못 이해 했습니까? 그런 기능을 위해 내가해야할 일은 무엇입니까?

많은 설명서를 읽었지 만, 지금은 읽기 전에 혼란 스럽습니다. :(

모든 대답은 높게 평가 될 것이다.

감사

답변

4

을 ModP는 치어 (포장) 프로젝트이기 때문에, 어떤 자바 코드를 포함 할 수 없습니다.

12

일반적으로 받는다는 프로젝트 계층 구조는 저장 하위 프로젝트는 부모 아래, 즉 귀하의 조건하에 저장됩니다 :

modP 
    pom.xml 
    modC1 
     pom.xml 
    modC2 
     pom.xml 

하위 프로젝트는 자체적으로 childre N 등

하나를 포함해야 높은 수준을 제외하고 각 프로젝트 정의 각 상위 모듈은 모듈의 목록을 보유해야

<parent> 
    <groupId>com.company</groupId> 
    <artifactId>parent-artifact-id</artifactId> 
    <version>1.0</version> 
</parent> 

같은 : 귀하의 경우 지금까지 내가 이해

<modules> 
    <module>child1</module>  
    <module>child2</module>  
    <module>child3</module>  
</modules> 

을 당신은 3 개의 프로젝트를 모두 같은 디렉토리에두고 있지만 그 중 하나는 부모입니다. 가능하지만 부모님의 부모님에 대한 귀하의 언급이 잘못되었다고 생각합니다. 점의 수는 3 동안 1이어야한다이다 :

<relativePath>.../modP/pom.xml</relativePath>

이 하나를 시도해보십시오 : 당신은 제대로 이해

<relativePath>../modP/pom.xml</relativePath>

+0

. 3 개의 프로젝트가 모두 같은 디렉토리에 있고 점들의 수는 정확하게 문서화되어 있습니다. Puce가이 경우에 맞습니다. 부모 pom.xml (프로젝트)에는 코드가 없어야합니다. – Tiho