Jakarta ee Maven3中的Java 6企业项目(WAR)(模块)
我在Maven3中创建了基于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)我应该如何添加其他模块(如
- 企业项目(超级POM)
- ep型号(生产罐)
- ep持久化(产生JAR)
- ep服务(JAR)
- ep用户界面(JAR)
- ep webapp(将所有内容放在一起并产生战争)
- ep公共(生产罐)
- ep ws(Web服务;生成JAR)
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