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添加为模块
  • 我的选择是保持当前结构,然后从每个模块生成jar文件,并将它们作为maven依赖项的一部分使用


    我想我想展示的东西会符合你的选择

  • 创建一个POM项目作为父项目
  • 将每个jar和war添加为模块
  • 我的选择是保持当前结构,然后从每个模块生成jar文件,并将它们作为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>