Java Maven中父标记的含义

Java Maven中父标记的含义,java,maven,Java,Maven,我用和下一段代码相同的结构创建了我的项目 |-- modP | |-- pom.xml | |-- src | | |-- main | | `-- java | | `-- com | | `-- myorg | | `-- myapp | | `-- modP | |

我用和下一段代码相同的结构创建了我的项目

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

4.0.0
com.myorg.myapp
modP
0.0.1-快照
聚甲醛
modP
http://maven.apache.org
UTF-8
朱尼特
朱尼特
3.8.1
测试
我的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>

modP
com.myorg.myapp
0.0.1-快照
…/modP/pom.xml
4.0.0
com.myorg.myapp
modC1
罐子
modC1
http://maven.apache.org
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>

modP
com.myorg.myapp
0.0.1-快照
…/modP/pom.xml
4.0.0
com.myorg.myapp
modC2
罐子
modC2
http://maven.apache.org
我的问题是,我是否可以在AppC1.java中使用ModP中的AppP.java,以及在ModC1和ModC2中使用AppC2.java

我试过这个,但似乎不起作用。我是否误解了pom.xml中父标记的含义?对于这样的函数,我需要在maven中做什么

我读了很多文档,但现在我比以前更困惑了(

每一个答案都将受到高度赞赏


谢谢

因为ModP是一个pom(打包)项目,它不应该包含任何Java代码。

通常,maven项目层次结构存储在层次结构文件系统中。子项目存储在父项目下,也就是说,在您的术语中:

modP
    pom.xml
    modC1
        pom.xml
    modC2
        pom.xml
子项目可能有自己的子女等

除较高级别的项目外,每个项目都应包含以下定义

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

com公司
父工件id
1
每个父模块应包含模块列表:

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

孩子1
孩子2
孩子3
据我所知,在您的案例中,您将所有3个项目都保存在同一目录中,但其中一个是家长。这是可能的,但我认为您对家长pom的引用是错误的。点数为3,而点数应为1:

../modP/pom.xml

试试这个:


。/modP/pom.xml

您理解正确。所有3个项目都在同一个目录中,点的数量根据maven文档是正确的。我认为Puce在这种情况下是正确的。父pom.xml(项目)不应包含任何代码。