首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Maven3中的Java6企业项目(WAR) (模块)

Maven3中的Java6企业项目(WAR) (模块)
EN

Stack Overflow用户
提问于 2011-09-07 19:08:54
回答 3查看 561关注 0票数 0

我在Maven3中创建了Java6EnterpriseProject (WAR)

  • http://www.sonatype.com/books/mvnex-book/reference/multimodule-web-spring.html
  • http://www.znetdevelopment.com/blogs/2009/02/18/j2ee-project-structures

在这种结构下:

  • EnterpriseProject (Super )
    • ep-模型(produces JAR)
    • ep-persist (produces JAR)
    • ep-service (produces )
    • ep-ui) (produces JAR)
    • ep-webapp )(将所有产品组合在一起并生成WAR)

)

与依赖项(->):

代码语言:javascript
复制
ep-webapp -> ep-ui -> ep-model
                   -> ep-service -> ep-model
                                 -> ep-persist -> ep-model 

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

Q1)这个解决方案对吗?

Q2)如何添加其他模块(如何设置依赖项)?

  • ep-公共(生产JAR)
  • ep-ws (webservices;produces )

我应该只将ep-公共依赖添加到ep(只是为了将ep-公共库添加到war中),还是在我使用ep的任何地方都是公共的?

代码语言:javascript
复制
ep-webapp -> ep-ui -> ep-model
                   -> ep-service -> ep-model
                                 -> ep-persist -> ep-model 
          -> ep-common
          -> ep-ws

非常感谢你的建议

我现在的解决方案: EnterpriseProject超级pom:

代码语言:javascript
复制
<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>

ep-webapp pom:

代码语言:javascript
复制
<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>

ep-ui pom:

代码语言:javascript
复制
<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>

ep-模式pom:

代码语言:javascript
复制
<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>

ep-服务pom:

代码语言:javascript
复制
<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>

ep-持久化pom:

代码语言:javascript
复制
<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>
EN

回答 3

Stack Overflow用户

发布于 2011-09-07 21:40:32

Q1)这个解决方案是对的吗?

在我看来是一套结构良好的庞姆斯。

Q2)如何添加其他模块(如何设置依赖项)?ep-公共

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

如果您是一个Maven纯粹主义者,我将冒您可能的风险,您可以将ep-commons添加到根POM的<dependencyManagement>部分,但这将只在每个POM中为您节省一行(对于版本)。

注意:如果您将来要使用发行版插件,那么"${}“引用必须由硬编码组id和版本字符串替换,但是插件本身会处理这个问题。

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

票数 1
EN

Stack Overflow用户

发布于 2011-09-08 05:46:09

谢谢MaDa的明确答复。因此,如果我正确理解,我可以(如果我是纯粹主义者:-)将所有依赖项都添加到dependencyManagement中,并从使用依赖项的I子程序中删除版本。

我还有最后一个关于ep-ws的问题。我可能会使用SpringWS & JAXB (或Castor) (因为我更喜欢自上而下的方法和手工工作,而不需要逐个工具生成类,我也不知道JAX是否有可能)。Q3 ep-ws依赖ep-模型和ep-服务(过渡性地对ep-持久化),但一般不依赖ep-webapp,但是我需要将这种依赖添加到ep-webapp中,只是为了在war中添加ep-ws库,对吗?

关于dependencyManagement this blog

票数 0
EN

Stack Overflow用户

发布于 2011-09-08 08:58:28

所以我重新设计了我的项目,我希望这样做是可以的:

EnterpriseProject超级pom:

代码语言:javascript
复制
<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>

webapp pom:

代码语言:javascript
复制
<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>

普通pom:

代码语言:javascript
复制
<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>

模型pom:

代码语言:javascript
复制
<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>    

持久化pom:

代码语言:javascript
复制
<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>

服务舱:

代码语言:javascript
复制
<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>

ui pom:

代码语言:javascript
复制
<modelVersion>4.0.0</modelVersion>
<parent>
    <groupId>com.ep</groupId>
    <artifactId>enterprise-project</artifactId>
    <version>1.0-SNAPSHOT</version>
</parent>

<artifactId>ui</artifactId>
<packaging>jar</packaging>
<name>ui</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>service</artifactId>
    </dependency>
</dependencies>

ws pom:

代码语言:javascript
复制
<modelVersion>4.0.0</modelVersion>
<parent>
    <groupId>com.ep</groupId>
    <artifactId>enterprise-project</artifactId>
    <version>1.0-SNAPSHOT</version>
</parent>

<artifactId>ws</artifactId>
<packaging>jar</packaging>
<name>ws</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>service</artifactId>
    </dependency>
</dependencies>   
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7339256

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档