Maven 2 分割Maven项目的推荐解决方案?

Maven 2 分割Maven项目的推荐解决方案?,maven-2,Maven 2,在Maven中拆分大型企业项目的最佳方式是什么 很容易理解如何像这样垂直地划分事物 你有一个DAO项目 DAO项目是的一个依赖项 服务项目 服务项目是一个依赖项 web项目的一部分 有没有人对Maven.m中划分/拆分大型项目的最佳实践有什么看法 在公共父级中声明依赖项版本,或使用在特定项目的DependencyManager中声明版本并引用它 。在pluginManagement部分声明插件版本 在父pom中声明通用插件配置,特别是报告配置 使用存储库管理器,如 使用属性允许子项目继承配置

在Maven中拆分大型企业项目的最佳方式是什么

很容易理解如何像这样垂直地划分事物

  • 你有一个DAO项目
  • DAO项目是的一个依赖项 服务项目
  • 服务项目是一个依赖项 web项目的一部分
  • 有没有人对Maven.m中划分/拆分大型项目的最佳实践有什么看法

    • 在公共父级中声明依赖项版本,或使用在特定项目的DependencyManager中声明版本并引用它
    • 。在pluginManagement部分声明插件版本
    • 在父pom中声明通用插件配置,特别是报告配置
    • 使用存储库管理器,如
    • 使用属性允许子项目继承配置,但覆盖键值(例如,在distributionManagement的url中)
    • 建立一个。开发中的项目应该有快照版本,并定期部署到存储库中

      • 一些对我有帮助的事情

        • 对相关的项目使用多模块项目,并且仅对相关的项目使用多模块项目。仅存在于单个EAR中的EJB就是一个候选对象。EJB和客户端应用程序使用的bo层不是
        • 每个pom有一个工件,每个多模块项目有一个可部署工件不要浪费时间试图解决这个问题
        • 创建包含通用依赖项集的依赖项POM。这样,您就可以在一个依赖项中包含DAO、jdbc驱动程序和ORM工具。它还使得将几十个项目升级到ORM或DAO的最新版本变得更加容易
        • 创建仅用于运行程序集和创建部署集的生成器项目。这将使项目的多个部分保持同步。组装大型复杂的企业应用程序通常非常复杂,以至于您需要混合使用maven、shell脚本和/或ant:run任务以及几十个概要文件。将混乱放在远离代码的项目中,将在混乱蔓延之前包含混乱
        • 创建测试人员项目以供持续集成使用。在这些POM中定义web和应用服务器以及测试部署信息。使用父项目和公共属性文件将使测试部署更改更容易
        • 仅在父pom中定义distributionManagement如果可以使所有子项目成为其子项目(或孙子项目)
        • 尽量不要依赖于每次构建时都将大文件(EAR、WAR)塞进存储库。无需在每个快照上将175mb WAR推送到nexus,从而缩短了构建时间
        • 尽可能少地定义事物。干巴巴的身材是快乐的身材。源代码版本为1.5的30个POM或使用junit 3.8.2的30个POM将使升级到java 6或junit 4.4变得更加困难

        希望这有帮助。

        这都是调整。Maven既没有全部的也没有最新的。我的救了我,你可以看着,感觉什么对你合适

        <?xml version="1.0" encoding="UTF-8"?>
        <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/maven-v4_0_0.xsd">
          <modelVersion>4.0.0</modelVersion>
          <groupId>com.appspot.classifiedsmarket</groupId>
          <artifactId>classifiedsmarket</artifactId>
          <packaging>war</packaging>
          <version>1.0-SNAPSHOT</version>
          <name>classifiedsmarket Maven Webapp</name>
          <url>http://maven.apache.org</url>
          <dependencies>
            <dependency>
              <groupId>junit</groupId>
              <artifactId>junit</artifactId>
              <version>3.8.1</version>
              <scope>test</scope>
            </dependency>
            <dependency>
                    <groupId>log4j</groupId>
                    <artifactId>log4j</artifactId>
                    <version>1.2.12</version>
                    <scope>compile</scope>
                </dependency>
            <dependency>
                    <groupId>httpunit</groupId>
                    <artifactId>httpunit</artifactId>
                    <version>1.6.1</version>
                    <scope>compile</scope>
                </dependency>
            <dependency>
                    <groupId>struts</groupId>
                    <artifactId>struts</artifactId>
                    <version>1.2.9</version>
                    <scope>compile</scope>
                </dependency>
            <dependency>
                    <groupId>mysql</groupId>
                    <artifactId>mysql-connector-java</artifactId>
                    <version>5.1.6</version>
                    <scope>compile</scope>
                </dependency>
            <dependency>
                    <groupId>informa</groupId>
                    <artifactId>informa</artifactId>
                    <version>0.6.0</version>
                    <scope>compile</scope>
                </dependency>
            <dependency>
                    <groupId>org.jasypt</groupId>
                    <artifactId>jasypt</artifactId>
                    <version>1.3</version>
                    <scope>compile</scope>
                </dependency>
            <dependency>
                    <groupId>htmlunit</groupId>
                    <artifactId>htmlunit</artifactId>
                    <version>1.9</version>
                    <scope>compile</scope>
                </dependency>
        
            <dependency>
         <groupId>javax.activation</groupId>
         <artifactId>activation</artifactId>
         <version>1.1</version>
        </dependency>
        <dependency>
         <groupId>javax.mail</groupId>
         <artifactId>mail</artifactId>
         <version>1.4</version>
        </dependency>
        <dependency>
                    <groupId>dwr</groupId>
                    <artifactId>dwr</artifactId>
                    <version>1.1.3</version>
                    <scope>compile</scope>
                </dependency>
        <dependency>
                    <groupId>commons-dbcp</groupId>
                    <artifactId>commons-dbcp</artifactId>
                    <version>1.2.2</version>
                    <scope>compile</scope>
                </dependency>
        <dependency>
                    <groupId>commons-pool</groupId>
                    <artifactId>commons-pool</artifactId>
                    <version>1.4</version>
                    <scope>compile</scope>
                </dependency>
        <dependency>
                    <groupId>jstl</groupId>
                    <artifactId>jstl</artifactId>
                    <version>1.1.2</version>
                    <scope>compile</scope>
                </dependency>
        <dependency>
                    <groupId>taglibs</groupId>
                    <artifactId>standard</artifactId>
                    <version>1.1.2</version>
                    <scope>compile</scope>
                </dependency>
        
        
        
        
        
        
        
        
        
          </dependencies>
          <build>
            <finalName>classifiedsmarket</finalName>
            <plugins>
                    <plugin>
                        <artifactId>maven-compiler-plugin</artifactId>
                        <version>RELEASE</version>
                        <configuration>
                            <source>1.6</source>
                            <target>1.6</target>
                        </configuration>
                    </plugin>
                    <plugin>
                        <artifactId>maven-compiler-plugin</artifactId>
                        <version>RELEASE</version>
                        <configuration>
                            <encoding>UTF-8</encoding>
                            <source>1.5</source>
                            <target>1.5</target>
                        </configuration>
                    </plugin>
                    <plugin>
                        <artifactId>maven-resources-plugin</artifactId>
                        <version>RELEASE</version>
                        <configuration>
                            <encoding>UTF-8</encoding>
                        </configuration>
                    </plugin>
                </plugins>
          </build>
          <properties>
                <netbeans.hint.deploy.server>Tomcat55</netbeans.hint.deploy.server>
            </properties>
        </project>
        
        
        4.0.0
        com.appspot.classifiedsmarket
        分类市场
        战争
        1.0-快照
        分类市场专家Webapp
        http://maven.apache.org
        朱尼特
        朱尼特
        3.8.1
        测试
        log4j
        log4j
        1.2.12
        编译
        高温超导单元
        高温超导单元
        1.6.1
        编译
        支柱
        支柱
        1.2.9
        编译
        mysql
        mysql连接器java
        5.1.6
        编译
        英富曼集团
        英富曼集团
        0.6.0
        编译
        org.jasypt
        茉莉花
        1.3
        编译
        htmlunit
        htmlunit
        1.9
        编译
        javax.activation
        激活
        1.1
        javax.mail
        邮件
        1.4
        dwr
        dwr
        1.1.3
        编译
        公共dbcp
        公共dbcp
        1.2.2
        编译
        共用池
        共用池
        1.4
        编译
        jstl
        jstl
        1.1.2
        编译
        塔格利布
        标准
        1.1.2
        编译
        分类市场
        maven编译器插件
        释放
        1.6
        1.6
        maven编译器插件
        释放
        UTF-8
        1.5
        1.5
        maven资源插件
        释放
        UTF-8
        Tomcat55
        
        我一直很高兴使用来自的布局。从头到尾读一读,从中获得灵感,并将其转化为对你有用的东西。。

        好的提示,但它们并没有真正解决问题……我想他是在问如何重构大型代码base@Ken如果是这样,那就不是一个maven-2问题。OP已经描述了他们打算如何分离组件。如果他们在这方面需要进一步的建议,应该相应地对其进行标记(例如java重构)。最新的一点是“依赖关系管理”,您可以使用它定义要在“主pom”和所有子模块中使用的工件的版本,因此升级的痛苦要小得多