Jakarta ee Maven3中的Java 6企业项目(WAR)(模块)

Jakarta ee Maven3中的Java 6企业项目(WAR)(模块),jakarta-ee,maven-2,java-ee-6,maven-3,Jakarta Ee,Maven 2,Java Ee 6,Maven 3,我在Maven3中创建了基于 在这种结构中: 企业项目(超级POM) ep型号(生产罐) ep持久化(产生JAR) ep服务(JAR) ep用户界面(JAR) ep webapp(将所有内容放在一起并产生战争) 具有依赖项(->): 当我运行企业项目目标“包”时,war在EnterpriseProject\ep webapp\target\中创建,此war包含 所有需要的库:ep模型、ep持久化、ep服务、ep ui Q1)这是正确的解决方案吗 问题2)我应该如何添加其他模块(如

我在Maven3中创建了基于

在这种结构中:

  • 企业项目(超级POM)
    • ep型号(生产罐)
    • ep持久化(产生JAR)
    • ep服务(JAR)
    • ep用户界面(JAR)
    • ep webapp(将所有内容放在一起并产生战争)
具有依赖项(->):

当我运行企业项目目标“包”时,war在EnterpriseProject\ep webapp\target\中创建,此war包含 所有需要的库:ep模型、ep持久化、ep服务、ep ui

Q1)这是正确的解决方案吗

问题2)我应该如何添加其他模块(如何设置依赖项)

  • ep公共(生产罐)
  • ep ws(Web服务;生成JAR)
我应该只在ep weapp pom中添加ep common dependency(仅用于将ep common lib添加到war中)还是在使用ep common的任何地方添加ep common dependency

ep-webapp -> ep-ui -> ep-model
                   -> ep-service -> ep-model
                                 -> ep-persist -> ep-model 
          -> ep-common
          -> ep-ws
谢谢你的提示

我目前的解决办法是: 企业项目超级pom:

<modelVersion>4.0.0</modelVersion>
<groupId>com.ep</groupId>
<artifactId>enterprise-project</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<name>Enterprise Project</name>
<modules>
    <module>../ep-model</module>
    <module>../ep-persist</module>
    <module>../ep-service</module>
    <module>../ep-ui</module>
    <module>../ep-webapp</module>
</modules>
4.0.0
com.ep
企业项目
聚甲醛
1.0-快照
企业项目
../ep模型
../ep持续
../ep服务
../ep用户界面
../ep webapp
ep webapp pom:

<modelVersion>4.0.0</modelVersion>
<parent>
    <groupId>com.ep</groupId>
    <artifactId>enterprise-project</artifactId>
    <version>1.0-SNAPSHOT</version>
    <relativePath>../ep/pom.xml</relativePath>
</parent>

<artifactId>ep-webapp</artifactId>
<packaging>war</packaging>
<name>webapp</name>

<dependencies>
    <dependency>
        <groupId>${project.groupId}</groupId>
        <artifactId>ep-ui</artifactId>
        <version>${project.version}</version>
    </dependency>
</dependencies>
<modelVersion>4.0.0</modelVersion>
<parent>
    <groupId>com.ep</groupId>
    <artifactId>enterprise-project</artifactId>
    <version>1.0-SNAPSHOT</version>
</parent>

<artifactId>webapp</artifactId>
<packaging>war</packaging>
<name>webapp</name>

<dependencies>
    <dependency>
        <groupId>${project.groupId}</groupId>
        <artifactId>ui</artifactId>
    </dependency>
    <dependency>
        <groupId>${project.groupId}</groupId>
        <artifactId>ws</artifactId>
    </dependency>
4.0.0
com.ep
企业项目
1.0-快照
../ep/pom.xml
ep网络应用程序
战争
网络应用
${project.groupId}
ep用户界面
${project.version}
ep ui pom:

<modelVersion>4.0.0</modelVersion>
<parent>
    <groupId>com.ep</groupId>
    <artifactId>enterprise-project</artifactId>
    <version>1.0-SNAPSHOT</version>
    <relativePath>../ep/pom.xml</relativePath>
</parent>

<artifactId>ep-ui</artifactId>
<packaging>jar</packaging>
<name>ui</name>

<dependencies>
    <dependency>
        <groupId>${project.groupId}</groupId>
        <artifactId>ep-model</artifactId>
        <version>${project.version}</version>
    </dependency>
    <dependency>
        <groupId>${project.groupId}</groupId>
        <artifactId>ep-service</artifactId>
        <version>${project.version}</version>
    </dependency>
</dependencies>
4.0.0
com.ep
企业项目
1.0-快照
../ep/pom.xml
ep用户界面
罐子
用户界面
${project.groupId}
ep模型
${project.version}
${project.groupId}
ep服务
${project.version}
ep型号pom:

<modelVersion>4.0.0</modelVersion>
<parent>
    <groupId>com.ep</groupId>
    <artifactId>enterprise-project</artifactId>
    <version>1.0-SNAPSHOT</version>
    <relativePath>../ep/pom.xml</relativePath>
</parent>

<artifactId>ep-model</artifactId>
<packaging>jar</packaging>
<name>model</name>
<modelVersion>4.0.0</modelVersion>
<parent>
    <groupId>com.ep</groupId>
    <artifactId>enterprise-project</artifactId>
    <version>1.0-SNAPSHOT</version>
</parent>

<artifactId>model</artifactId>
<packaging>jar</packaging>
<name>model</name>

<dependencies>
    <dependency>
        <groupId>${project.groupId}</groupId>
        <artifactId>common</artifactId>
    </dependency>
</dependencies>    
4.0.0
com.ep
企业项目
1.0-快照
../ep/pom.xml
ep模型
罐子
模型
ep服务pom:

<modelVersion>4.0.0</modelVersion>
<parent>
    <groupId>com.ep</groupId>
    <artifactId>enterprise-project</artifactId>
    <version>1.0-SNAPSHOT</version>
    <relativePath>../ep/pom.xml</relativePath>
</parent>

<artifactId>ep-service</artifactId>
<packaging>jar</packaging>
<name>service</name>

<dependencies>
    <dependency>
        <groupId>${project.groupId}</groupId>
        <artifactId>ep-model</artifactId>
        <version>${project.version}</version>
    </dependency>
    <dependency>
        <groupId>${project.groupId}</groupId>
        <artifactId>ep-persist</artifactId>
        <version>${project.version}</version>
    </dependency>
</dependencies>
<modelVersion>4.0.0</modelVersion>
<parent>
    <groupId>com.ep</groupId>
    <artifactId>enterprise-project</artifactId>
    <version>1.0-SNAPSHOT</version>
</parent>

<artifactId>service</artifactId>
<packaging>jar</packaging>
<name>service</name>

<dependencies>
    <dependency>
        <groupId>${project.groupId}</groupId>
        <artifactId>common</artifactId>
    </dependency>
    <dependency>
        <groupId>${project.groupId}</groupId>
        <artifactId>model</artifactId>
    </dependency>
    <dependency>
        <groupId>${project.groupId}</groupId>
        <artifactId>persist</artifactId>
    </dependency>
</dependencies>
4.0.0
com.ep
企业项目
1.0-快照
../ep/pom.xml
ep服务
罐子
服务
${project.groupId}
ep模型
${project.version}
${project.groupId}
ep持续
${project.version}
ep持久化pom:

<modelVersion>4.0.0</modelVersion>
<parent>
    <groupId>com.ep</groupId>
    <artifactId>enterprise-project</artifactId>
    <version>1.0-SNAPSHOT</version>
    <relativePath>../ep/pom.xml</relativePath>
</parent>

<artifactId>ep-persist</artifactId>
<packaging>jar</packaging>
<name>persist</name>

<dependencies>
    <dependency>
        <groupId>${project.groupId}</groupId>
        <artifactId>ep-model</artifactId>
        <version>${project.version}</version>
    </dependency>
</dependencies>
<modelVersion>4.0.0</modelVersion>
<parent>
    <groupId>com.ep</groupId>
    <artifactId>enterprise-project</artifactId>
    <version>1.0-SNAPSHOT</version>
</parent>

<artifactId>persist</artifactId>
<packaging>jar</packaging>
<name>persist</name>

<dependencies>
    <dependency>
        <groupId>${project.groupId}</groupId>
        <artifactId>common</artifactId>
    </dependency>
    <dependency>
        <groupId>${project.groupId}</groupId>
        <artifactId>model</artifactId>
    </dependency>
</dependencies>
4.0.0
com.ep
企业项目
1.0-快照
../ep/pom.xml
ep持续
罐子
坚持
${project.groupId}
ep模型
${project.version}
Q1)这是正确的解决方案吗

对我来说,似乎是一套结构良好的POM

问题2)我应该如何添加其他模块(如何设置依赖项)?[ep通用,ep ws]

至于ep commons,我猜它是所有模块(公共类型、异常定义等)的共同特性——如果是这样,您需要在使用它的任何地方引用它,否则Maven将无法编译它,因为它基于依赖关系创建类路径。我理解您的担忧(您必须多次重复依赖关系),但由于您使用变量
${project.groupId}
${project.version}
,因此您没有在不同的依赖项目中引用同一模块的不同版本的风险

如果你是一个Maven纯粹主义者,我敢说你可能是,你可以将ep commons添加到根POM的
部分,但这只会在每个POM中为你节省一行(对于版本)

注意:如果您将来要使用发布插件,“${}”引用将必须替换为硬编码的组id和版本字符串,但插件会自行处理


至于ep ws,我不太确定有什么(从WSDLs生成的JAX-ws类?)。如果只是这样,那么就和ep commons一样。

谢谢MaDa给出的明确答案。所以,如果我理解正确,我可以(如果我是纯粹主义者:-)将所有依赖项也添加到根POM的DependencyManager中,并从使用给定依赖项的I子级中删除版本

我有关于ep ws的最后一个问题。可能我会使用SpringWS&JAXB(或Castor)(因为我更喜欢自上而下的方法和手动工作,而不必通过工具生成类,我不知道JAX-WS是否可行)。Q3 ep ws依赖于ep模型和ep服务(在ep persist上传递),但通常不依赖于ep webapp,但我需要将此依赖添加到ep webapp中,只是为了将ep ws库添加到war中,对吗


关于依赖管理

所以我重新修改了我的项目,我希望这一切都很好:

企业项目超级pom:

<modelVersion>4.0.0</modelVersion>
<groupId>com.ep</groupId>
<artifactId>enterprise-project</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<name>Enterprise Project</name>

<modules>
    <module>common</module>
    <module>model</module>
    <module>persist</module>
    <module>service</module>
    <module>ui</module>
    <module>webapp</module>
    <module>ws</module>
</modules>

<build>
    <defaultGoal>package</defaultGoal>
    <pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                </configuration>
            </plugin>
        </plugins>
    </pluginManagement>
</build>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>${project.groupId}</groupId>
            <artifactId>webapp</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>${project.groupId}</groupId>
            <artifactId>common</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>${project.groupId}</groupId>
            <artifactId>model</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>${project.groupId}</groupId>
            <artifactId>persist</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>${project.groupId}</groupId>
            <artifactId>service</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>${project.groupId}</groupId>
            <artifactId>ui</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>${project.groupId}</groupId>
            <artifactId>ws</artifactId>
            <version>${project.version}</version>
        </dependency>
    </dependencies>
</dependencyManagement>
4.0.0
com.ep
企业项目
聚甲醛
1.0-快照
企业项目
常见的
模型
坚持
服务
用户界面
网络应用
ws
包裹
org.apache.maven.plugins
maven编译器插件
1.7
1.7
${project.groupId}
网络应用
${project.version}
${project.groupId}
常见的
${project.version}
${project.groupId}
模型
${project.version}
${project.groupId}
坚持
${project.version}
${project.groupId}
服务
${project.version}
${project.groupId}
用户界面
${project.version}
${project.groupId}
ws
${project.version}
webapp pom:

<modelVersion>4.0.0</modelVersion>
<parent>
    <groupId>com.ep</groupId>
    <artifactId>enterprise-project</artifactId>
    <version>1.0-SNAPSHOT</version>
    <relativePath>../ep/pom.xml</relativePath>
</parent>

<artifactId>ep-webapp</artifactId>
<packaging>war</packaging>
<name>webapp</name>

<dependencies>
    <dependency>
        <groupId>${project.groupId}</groupId>
        <artifactId>ep-ui</artifactId>
        <version>${project.version}</version>
    </dependency>
</dependencies>
<modelVersion>4.0.0</modelVersion>
<parent>
    <groupId>com.ep</groupId>
    <artifactId>enterprise-project</artifactId>
    <version>1.0-SNAPSHOT</version>
</parent>

<artifactId>webapp</artifactId>
<packaging>war</packaging>
<name>webapp</name>

<dependencies>
    <dependency>
        <groupId>${project.groupId}</groupId>
        <artifactId>ui</artifactId>
    </dependency>
    <dependency>
        <groupId>${project.groupId}</groupId>
        <artifactId>ws</artifactId>
    </dependency>
4.0.0
com.ep
企业项目
1.0-快照
网络应用
战争
网络应用
${project.groupId}
用户界面
${project.groupId}
ws

普通pom:

<modelVersion>4.0.0</modelVersion>
<parent>
    <groupId>com.ep</groupId>
    <artifactId>enterprise-project</artifactId>
    <version>1.0-SNAPSHOT</version>
</parent>

<artifactId>common</artifactId>
<packaging>jar</packaging>
<name>common</name>
4.0.0
com.ep
企业项目
1.0-快照
常见的
罐子
常见的
pom型号:

<modelVersion>4.0.0</modelVersion>
<parent>
    <groupId>com.ep</groupId>
    <artifactId>enterprise-project</artifactId>
    <version>1.0-SNAPSHOT</version>
    <relativePath>../ep/pom.xml</relativePath>
</parent>

<artifactId>ep-model</artifactId>
<packaging>jar</packaging>
<name>model</name>
<modelVersion>4.0.0</modelVersion>
<parent>
    <groupId>com.ep</groupId>
    <artifactId>enterprise-project</artifactId>
    <version>1.0-SNAPSHOT</version>
</parent>

<artifactId>model</artifactId>
<packaging>jar</packaging>
<name>model</name>

<dependencies>
    <dependency>
        <groupId>${project.groupId}</groupId>
        <artifactId>common</artifactId>
    </dependency>
</dependencies>    
4.0.0
com.ep
企业项目
1.0-快照
模型
罐子
模型
${project.group