2011-12-07 18 views
6

Ho creato il mio progetto con la stessa struttura del successivo frammento di codice.Significato del tag principale in 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 

mio pom.xml per MODP è:

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

mio pom.xml per C1 è:

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

E pom.xml per C2 è:

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

La mia domanda è possibile utilizzare questo riferimento di configurazione AppP.jav a da ModP in AppC1.java e AppC2.java in ModC1 e ModC2.

Ho provato questo e sembra che questo non funziona. Ho frainteso il significato del tag parent in pom.xml? Cosa devo fare in Maven per tale funzione?

Ho letto molta documentazione, ma ora sono ancora più confuso di prima di leggere. :(

Ogni risposta sarà molto apprezzato.

Grazie

risposta

4

Dal MODP è un progetto POM (packaging), non dovrebbe contenere alcun codice Java. Gerarchia

12

progetti Tipicamente Maven è memorizzato nel file system gerarchico. I progetti figlio sono archiviati in parent, cioè nei tuoi termini:

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

I progetti secondari possono avere i propri figli n ecc

Ogni progetto, tranne il più alto livello si dovrebbe contenere definizione come

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

Ogni modulo genitore dovrebbe tenere elenco dei moduli:

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

Per quanto ho capito nel tuo caso si tengono tutti e 3 i progetti nella stessa directory ma uno di essi è padre. È possibile ma penso che il tuo riferimento al ruolo del genitore sia sbagliato. Numero di punti è 3, mentre dovrebbe essere 1:

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

provare questo:

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

+0

avete capito bene. Tutti e 3 i progetti sono nella stessa directory, e il numero di punti è corretto secondo la documentazione di Maven. La cosa che Puce ha ragione in questo caso. Il padre pom.xml (progetto) non dovrebbe contenere alcun codice. – Tiho

Problemi correlati