2011-12-07 23 views
6

Projemi, kodun sonraki kod snippet'inde olduğu gibi oluşturdum.Maven'deki üst etiketin anlamı

|-- 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 My pom.xml olup:

<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 My pom.xml olup:

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

ve C2 için pom.xml olup:

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

Sorum şu ki bu gibi bir yapılandırma referansı kullanabilir miyim AppP.jav ModC1 ve ModC2'de AppC1.java ve AppC2.java'da bir ModP'den.

Bunu denedim ve işe yaramıyor gibi görünüyor. Pom.xml dosyasında ebeveyn etiketinin anlamını yanlış anlamış mıyım? Maven'de böyle bir işlev için ne yapmam gerekiyor?

Çok fazla dokümantasyon okudum, ancak şimdi okumadan daha da kafam karıştı. :(

Her cevap son derece takdir edilecektir.

Teşekkür

cevap

4

ModP bir pom (paketleme) projesi olduğundan, Java kodunu içermemelidir.

12

Tipik maven projeler hiyerarşi saklanır hiyerarşik dosya sisteminde Çocuk projeleri hangi açıdan, yani ebeveyn altında saklanır.

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

alt projeleri kendi childre olabilir n vb

biri içermelidir yüksek seviyede hariç her proje tanımı Her ebeveyn modülü modüllerinin listesini tutmak gerekir

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

gibi: senin durumunda Bildiğim kadarıyla anladığım kadarıyla

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

3 projeyi aynı dizinde tutuyorsunuz ama bunlardan biri ebeveyn. Bu mümkün ama bence ana babanıza yapılan başvuru yanlış. noktaların sayısı 3 iken 1 olmalıdır geçerli:

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

bu bir deneyin: Doğru anlaşılan

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

+0

. Tüm 3 proje aynı dizinde ve nokta sayısı maven belgelerine göre doğrudur. Ben bu durumda Puce hakkı var. Ana pom.xml (proje) herhangi bir kod içermemelidir. – Tiho