我在Maven3中创建了Java6EnterpriseProject (WAR)
在这种结构下:
)
与依赖项(->):
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-公共依赖添加到ep(只是为了将ep-公共库添加到war中),还是在我使用ep的任何地方都是公共的?
ep-webapp -> ep-ui -> ep-model
-> ep-service -> ep-model
-> ep-persist -> ep-model
-> ep-common
-> ep-ws非常感谢你的建议
我现在的解决方案: EnterpriseProject超级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>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>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>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>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>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>发布于 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类?)如果是那样的话,那就和一样了。
发布于 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
发布于 2011-09-08 08:58:28
所以我重新设计了我的项目,我希望这样做是可以的:

EnterpriseProject超级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>webapp pom:
<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:
<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:
<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:
<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>服务舱:
<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:
<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:
<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> https://stackoverflow.com/questions/7339256
复制相似问题