Java Maven项目设置
我目前得到了一个与以下依赖平面结构的项目Java Maven项目设置,java,maven,Java,Maven,我目前得到了一个与以下依赖平面结构的项目 Core --> core.jar Service --> WAR Domain --> domain.jar Web -> WAR 基本上,一切都依赖于核心模块中的core.jar,Web依赖于域模块中的域jar,域模块依赖于核心 我计划将其转换为Maven,我需要一些关于我应该使用的最佳结构的反馈 我的选择是保持当前结构,然后
Core --> core.jar
Service --> WAR
Domain --> domain.jar
Web -> WAR
基本上,一切都依赖于核心模块中的core.jar,Web依赖于域模块中的域jar,域模块依赖于核心
我计划将其转换为Maven,我需要一些关于我应该使用的最佳结构的反馈
我的选择是保持当前结构,然后从每个模块生成jar文件,并将它们作为maven依赖项的一部分使用。或
在某种层次结构中重新构造模块,我需要一些帮助
我想遵循Maven的一些最佳实践用法。我想我要演示的内容将符合您的选择
我想我想展示的东西会符合你的选择
设置父pom,您可以使用它来管理子项目之间的依赖关系。然后将每个jar/war工件设置为模块 每个模块使用模块pom中的正常
来获取其依赖项
因此,我们有:
parent-project [pom]:
modules:
core [jar]
domain [jar] - depends on core
service [war] - depends on core
web [war] - depends on domain
作为一个具体的例子,下面是我的一个项目的示例:
父pom
<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>org.example</groupId>
<artifactId>myproject-parent</artifactId>
<version>1.0.0</version>
<packaging>pom</packaging>
<name>myproject-parent</name>
<url>http://maven.apache.org</url>
<properties>
<jersey.version>2.6</jersey.version>
<jsonunit.version>1.5.5</jsonunit.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<spring.version>4.1.4.RELEASE</spring.version>
</properties>
<modules>
<module>api-client</module>
<module>load-tests</module>
<module>regression-tests</module>
</modules>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.2</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
<reporting>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-report-plugin</artifactId>
<version>2.18.1</version>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<version>2.7</version>
</plugin>
</plugins>
</reporting>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-client</artifactId>
<version>${jersey.version}</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jackson</artifactId>
<version>${jersey.version}</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.connectors</groupId>
<artifactId>jersey-apache-connector</artifactId>
<version>${jersey.version}</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.3.2</version>
</dependency>
<dependency>
<groupId>commons-cli</groupId>
<artifactId>commons-cli</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.10</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.1.2</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
</dependency>
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf</artifactId>
<version>2.1.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>2.0.5-beta</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.jayway.jsonpath</groupId>
<artifactId>json-path</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>com.jayway.jsonpath</groupId>
<artifactId>json-path-assert</artifactId>
<version>2.0.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.22</version>
</dependency>
<dependency>
<groupId>net.javacrumbs.json-unit</groupId>
<artifactId>json-unit</artifactId>
<version>${jsonunit.version}</version>
</dependency>
<dependency>
<groupId>net.javacrumbs.json-unit</groupId>
<artifactId>json-unit-fluent</artifactId>
<version>${jsonunit.version}</version>
</dependency>
<dependency>
<groupId>dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>1.6.1</version>
</dependency>
</dependencies>
</dependencyManagement>
4.0.0
org.example
我的项目父项
1.0.0
聚甲醛
我的项目父项
http://maven.apache.org
2.6
1.5.5
UTF-8
4.1.4.1发布
api客户端
负荷试验
回归测试
org.apache.maven.plugins
maven编译器插件
3.2
1.8
1.8
org.apache.maven.plugins
maven surefire报告插件
2.18.1
org.codehaus.mojo
cobertura maven插件
2.7
org.springframework
spring上下文
${spring.version}
org.springframework
弹簧试验
${spring.version}
编译
org.glassfish.jersey.core
泽西岛客户
${jersey.version}
org.glassfish.jersey.media
泽西媒体公司
${jersey.version}
org.glassfish.jersey.connectors
泽西apache连接器
${jersey.version}
org.apache.commons
commons-lang3
3.3.2
commons cli
commons cli
1.2
org.slf4j
slf4j api
1.7.10
回写
回归经典
1.1.2
朱尼特
朱尼特
4.11
org.thymeleaf
百里香
2.1.4.1发布
org.mockito
莫基托磁芯
2.0.5-beta
测试
com.jayway.jsonpath
json路径
2.0.0
com.jayway.jsonpath
json路径断言
2.0.0
测试
org.freemarker
自由标记
2.3.22
net.javacrumps.json-unit
json单元
${jsonunit.version}
net.javacrumps.json-unit
json单元流畅
${jsonunit.version}
dom4j
dom4j
1.6.1
api客户端
<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>
<artifactId>api-client</artifactId>
<packaging>jar</packaging>
<parent>
<groupId>org.example</groupId>
<artifactId>myproject-parent</artifactId>
<version>1.0.0</version>
</parent>
<properties>
<xmlunit.version>2.0.0-alpha-03</xmlunit.version>
</properties>
<name>api-client</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-client</artifactId>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jackson</artifactId>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.connectors</groupId>
<artifactId>jersey-apache-connector</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>
<dependency>
<groupId>commons-cli</groupId>
<artifactId>commons-cli</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.jayway.jsonpath</groupId>
<artifactId>json-path</artifactId>
</dependency>
<dependency>
<groupId>com.jayway.jsonpath</groupId>
<artifactId>json-path-assert</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
</dependency>
<dependency>
<groupId>org.xmlunit</groupId>
<artifactId>xmlunit-core</artifactId>
<version>${xmlunit.version}</version>
</dependency>
<dependency>
<groupId>org.xmlunit</groupId>
<artifactId>xmlunit-matchers</artifactId>
<version>${xmlunit.version}</version>
</dependency>
<dependency>
<groupId>net.javacrumbs.json-unit</groupId>
<artifactId>json-unit</artifactId>
</dependency>
<dependency>
<groupId>net.javacrumbs.json-unit</groupId>
<artifactId>json-unit-fluent</artifactId>
</dependency>
<dependency>
<groupId>dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>1.6.1</version>
</dependency>
</dependencies>
<build>
<plugins>
... snip ...
</plugins>
</build>
</project>
4.0.0
api客户端
罐子
org.example
我的项目父项
1.0.0
2.0.0-alpha-03
api客户端
http://maven.apache.org
org.springframework
spring上下文
org.springframework
弹簧试验
编译
org.glassfish.jersey.core
泽西岛客户
org.glassfish.jersey.media
泽西媒体公司
org.glassfish.jersey.connectors
泽西apache连接器
org.apache.commons
commons-lang3
commons cli
commons cli
org.slf4j
slf4j api
回写
回归经典
朱尼特
朱尼特
org.thymeleaf
百里香
org.mockito
莫基托磁芯
测试
com.jayway.jsonpath
json路径
com.jayway.jsonpath
json路径断言
测试
org.freemarker
自由标记
<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>
<artifactId>load-tests</artifactId>
<packaging>jar</packaging>
<parent>
<groupId>org.example</groupId>
<artifactId>myproject-parent</artifactId>
<version>1.0.0</version>
</parent>
<name>load-tests</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>org.example</groupId>
<artifactId>api-client</artifactId>
<version>${parent.version}</version>
</dependency>
<dependency>
<groupId>dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>1.6.1</version>
</dependency>
<dependency>
<groupId>jaxen</groupId>
<artifactId>jaxen</artifactId>
<version>1.1.1</version>
</dependency>
</dependencies>
<build>
<plugins>
... snip ...
</plugins>
</build>
</project>