2011-12-07 21 views
6

Creé mi proyecto con la misma estructura que en el siguiente fragmento de código.Significado de la etiqueta padre en 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 

Mi pom.xml para MODP es:

<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> 

Mi pom.xml para C1 es:

<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> 

Y pom.xml para C2 es:

<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> 

Mi pregunta es si puedo usar dicha referencia de configuración AppP.jav a desde ModP en AppC1.java y AppC2.java en ModC1 y ModC2.

Intenté esto y parece que esto no funciona. ¿Entendí mal el significado de la etiqueta padre en pom.xml? ¿Qué tengo que hacer en maven para tal función?

He leído mucha documentación, pero ahora estoy aún más confundido que antes de leer. :(

Cada respuesta será muy apreciada.

Gracias

Respuesta

4

Desde MODP es un proyecto POM (envases), que no debe contener ningún código de Java.

12

proyectos de Maven Normalmente jerarquía se almacena en el sistema de archivos jerárquico proyectos infantiles se almacenan en los padres, es decir, en sus términos:.

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

Los sub-proyectos pueden tener su propio childre n etc.

Cada proyecto, excepto el de más alto nivel debería reunir definición como

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

Cada módulo primario lista de los módulos debe contener:

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

Por lo que yo entiendo, en su caso tienes los 3 proyectos en el mismo directorio, pero uno de ellos es padre. Es posible, pero creo que su referencia al padre es incorrecta. Número de puntos es 3, mientras que debe ser de 1:

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

prueba este:

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

+0

entendido bien. Los 3 proyectos están en el mismo directorio, y el número de puntos está de acuerdo con la documentación correcta. Lo que Puce tiene en este caso es correcto. Parent pom.xml (project) no debe contener ningún código. – Tiho

Cuestiones relacionadas