2011-12-07 11 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の親タグの意味を誤解しましたか?私はそのような機能のためにmavenで何をする必要がありますか?

私は多くのドキュメントを読みましたが、今は読んでいるよりもずっと混乱しています。 :(

すべての答えは非常に理解されるであろう。

おかげ

答えて

4

をMODPがポンポン(パッケージ)プロジェクトがあるので、それは任意のJavaコードを含むべきではありません。

12

通常のMavenプロジェクトの階層が保存されています子プロジェクトは親の下に、すなわちあなたの条件で保管されます:

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

サブプロジェクトは独自の子を持つことがありますNなど

1が含まれている必要があり、より高いレベルを除く各プロジェクトの定義各親モジュールは、モジュールのリストを保持する必要があり

<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つのプロジェクトをすべて同じディレクトリに置いていますが、そのうちの1つは親です。可能ですが、私はあなたの親のpomへの参照が間違っていると思います。ドット数が3しばらくは1であるべきである。

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

はこの1つを試してください:あなたが正しく理解

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

+0

。 3つのプロジェクトはすべて同じディレクトリにあり、ドットの数は正しいドキュメントに従っています.Puceはこの場合正しくあります。親のpom.xml(プロジェクト)はコードを含んではいけません。 – Tiho