最近在学习Maven,把一个开源的项目改成maven管理,期间使用到了多项目,从网上查阅了一些资料,主要参考的是http://kyfxbl.iteye.com/blog/1680045,在此把自己的一些心得体会写出来,供大家学习交流。

关于maven的安装,在此就不进行阐述,请参考网上其他教程。

本实例由4个项目组成,其中,aggregator是父工程,同时承担聚合模块和父模块的作用,没有实际代码和资源文件;open-plagform-common是公共的java工程;open-platfor-web是公共的web文件,主要包括css、js等;open-bug-m是最终要发布的应用,形成war包。

一、建立一个Maven工程:aggregator

/aggregator

/src/main/java

/src/test/java

pom.xml

此工程主要是父模块,聚合其他工程,没有实际代码和资源文件,最主要的是pom.xml文件,其主要内容如下:
Xml代码

<modelVersion>4.0.0</modelVersion><groupId>cn.jess.platform</groupId><artifactId>aggregator</artifactId><version>0.0.1-SNAPSHOT</version>
<!-- 因为是父工程 ,因此此处的packaging必须为pom --><packaging>pom</packaging><name>aggregator</name><modules>  <module>../open-platform-common</module>  <module>../open-platform-web</module>  <module>../open-bug-m</module></modules><!-- 配置部署的远程仓库 -->  <distributionManagement>  <snapshotRepository>  <id>nexus-snapshots</id>  <name>nexus distribution snapshot repository</name>  <url>http://127.0.0.1:8081/nexus/content/repositories/snapshots/</url>  </snapshotRepository>  </distributionManagement><build>  <pluginManagement>  <plugins>  <plugin>  <groupId>org.apache.maven.plugins</groupId>  <artifactId>maven-resources-plugin</artifactId>  <version>2.6</version>  <configuration>  <encoding>UTF-8</encoding>  </configuration>  </plugin>  <plugin>  <groupId>org.apache.maven.plugins</groupId>  <artifactId>maven-compiler-plugin</artifactId>  <version>2.5.1</version>  <configuration>  <encoding>UTF-8</encoding><source>1.6</source><target>1.6</target>  </configuration>  </plugin>  </plugins>  </pluginManagement>  </build>  <dependencyManagement>  <dependencies>  <dependency>  <groupId>com.sun</groupId>  <artifactId>tools</artifactId>  <version>1.6.0</version>  <scope>system</scope>  <systemPath>${env.JAVA_HOME}/lib/tools.jar</systemPath>  </dependency>  </dependencies>  </dependencyManagement>

二、建立一个Maven工程:open-platform-common
此工程主要是项目中使用到的公共java类库,pom文件主要内容如下:
xml代码:

<!-- 由于存在parent工程,因此groupId和version可以省略,直接使用parent工程--><modelVersion>4.0.0</modelVersion><artifactId>open-platform-common</artifactId><!-- 因为此工程要发布到webapp的lib目录下,因此为jar(不知道这样解释对否?) --><packaging>jar</packaging><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties>  <!-- 指定Maven仓库 --><repositories><!-- my的maven仓库 --><repository><id>myRepository</id><name>local private nexus</name><url>http://127.0.0.1:8081/nexus/content/groups/public/</url><releases><enabled>true</enabled></releases><snapshots><enabled>true</enabled></snapshots></repository></repositories><!-- 指定maven plugin仓库 --><pluginRepositories><!-- oschina的maven plugin仓库 --><pluginRepository><id>myPluginRepository</id><name>local private nexus</name><url>http://127.0.0.1:8081/nexus/content/groups/public/</url><releases><enabled>true</enabled></releases><snapshots><enabled>false</enabled></snapshots></pluginRepository></pluginRepositories><dependencies><!-- 此处的类库根据自己的需要进行添加 --></dependencies><!-- 用来指定父工程--><parent><groupId>cn.jess.platform</groupId><artifactId>aggregator</artifactId><version>0.0.1-SNAPSHOT</version><relativePath>../aggregator</relativePath></parent>

三、建立一个Maven工程:open-platform-web
此工程主要是项目中使用到的公共web文件,pom文件主要内容如下:
xml代码:

<!-- 由于存在parent工程,因此groupId和version可以省略,直接使用parent工程--><modelVersion>4.0.0</modelVersion><artifactId>open-platform-web</artifactId>
<!-- 因为此工程要发布到webapp应用的根目录下,因此为war(不知道这样解释对否?) --><packaging>war<ng><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties>  <!-- 指定Maven仓库 --><repositories><!-- my的maven仓库 --><repository><id>myRepository</id><name>local private nexus</name><url>http://127.0.0.1:8081/nexus/content/groups/public/</url><releases><enabled>true</enabled></releases><snapshots><enabled>true</enabled></snapshots></repository></repositories><!-- 指定maven plugin仓库 --><pluginRepositories><!-- oschina的maven plugin仓库 --><pluginRepository><id>myPluginRepository</id><name>local private nexus</name><url>http://127.0.0.1:8081/nexus/content/groups/public/</url><releases><enabled>true</enabled></releases><snapshots><enabled>false</enabled></snapshots></pluginRepository></pluginRepositories><parent><groupId>cn.jess.platform</groupId><artifactId>aggregator</artifactId><version>0.0.1-SNAPSHOT</version><relativePath>../aggregator</relativePath></parent>
</project>

注意:此工程的WEB-INF目录下必须包含web.xml文件,否则在执行mvn时会报错

四、建立一个Maven工程:open-bug-m:
此工程是最终要发布的应用,其依赖于open-platform-common和open-platform-web,因此在pom文件中要加入这两个工程的依赖,pom文件内容如下所示:
xml代码:

<groupId>open-bug-m</groupId><artifactId>open-bug-m</artifactId><packaging>war</packaging><name/><description/><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><parent><groupId>cn.jess.platform</groupId><artifactId>aggregator</artifactId><version>0.0.1-SNAPSHOT</version><relativePath>../aggregator</relativePath></parent> <!-- 指定Maven仓库 --><repositories><!-- my的maven仓库 --><repository><id>myRepository</id><name>local private nexus</name><url>http://127.0.0.1:8081/nexus/content/groups/public/</url><releases><enabled>true</enabled></releases><snapshots><enabled>true</enabled></snapshots></repository></repositories><!-- 指定maven plugin仓库 --><pluginRepositories><!-- oschina的maven plugin仓库 --><pluginRepository><id>myPluginRepository</id><name>local private nexus</name><url>http://127.0.0.1:8081/nexus/content/groups/public/</url><releases><enabled>true</enabled></releases><snapshots><enabled>false</enabled></snapshots></pluginRepository></pluginRepositories><dependencies><dependency><groupId>cn.jess.platform</groupId><artifactId>open-platform-common</artifactId><version>0.0.1-SNAPSHOT</version><type>jar</type></dependency><dependency><groupId>cn.jess.platform</groupId><artifactId>open-platform-web</artifactId><version>0.0.1-SNAPSHOT</version><type>war</type></dependency>      <!-- 此处的类库根据自己的需要进行添加 --></dependencies><build><finalName>open-bug</finalName><plugins><plugin>  <groupId>org.apache.maven.plugins</groupId>  <artifactId>maven-war-plugin</artifactId><version>2.3</version>  <configuration>  <packagingExcludes>WEB-INF/web.xml</packagingExcludes>    <overlays>  <overlay>  <groupId>cn.jess.platform</groupId>  <artifactId>open-platform-web</artifactId>  </overlay>  </overlays>  </configuration>  </plugin>  <plugin>  <groupId>org.codehaus.cargo</groupId>  <artifactId>cargo-maven2-plugin</artifactId>  <version>1.2.3</version>  <configuration>  <container>  <containerId>tomcat7x</containerId>  <home>F:\apache-tomcat-7.0.42(x64)</home>  </container>  <configuration>  <type>existing</type>  <home>F:\apache-tomcat-7.0.42(x64)</home>  <properties>  <cargo.jvmargs>  -Xdebug                    -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8787  </cargo.jvmargs>  </properties>  </configuration>  </configuration>  <executions>  <execution>  <id>cargo-run</id>  <phase>pre-integration-test</phase>  <goals>  <goal>run</goal>  </goals>  </execution>  </executions>  </plugin> </plugins></build>

关于maven-war-plugin和cargo-maven2-plugin的使用方法请参考网上其他使用教程。

所有上述四个工程准备就绪后,执行mvn install就可对工程项目进行部署。

现在存在的一个问题主要是:

如果把open-platform-common和open-platform-web工程合并为一个,则在open-bug-m不知道如何去引用它?

Maven多项目依赖配置相关推荐

  1. Maven Webapp项目中配置Tomcat

    1.在idea中配置并启动tomcat 接上一条使用模板创建一个webapp项目的博客,在配置完maven之后,要配置tomcat  在这里点击ok之后会出现一个警告 要解决上面那个警告,可以点右边的 ...

  2. maven导出项目依赖的jar包

    一.导出到默认目录 targed/dependency 从Maven项目中导出项目依赖的jar包:进入工程pom.xml 所在的目录下,执行如下命令: ? 1 mvn dependency:copy- ...

  3. 在maven web项目中配置log4j打印日志及Mybatis sql语句

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/wei542657623/article/details/51591736 1 添加依赖 在pom.x ...

  4. Maven项目依赖管理 学习笔记

    本学习笔记根据慕课视频[Maven项目依赖管理]摘录,主要学习maven的使用方式,从理念到实践.基础到应用,掌握基于maven管理java项目的方式. 目录 第一章 Maven概述 Maven简介 ...

  5. maven依赖管理(依赖配置、依赖传递、依赖冲突、依赖范围)

    文章目录 基本说明 依赖配置 依赖传递 直接依赖 间接依赖 依赖冲突 路径优先 声明优先 特殊依赖 可选依赖 排除依赖 可选依赖和排除依赖区别 依赖范围 总结 基本说明 这篇文章会介绍在maven中的 ...

  6. maven工程导入项目打开404_Maven依赖配置和依赖范围

    教程前面用坐标一一对应地描述了构件,并且保存在仓库中了.那用坐标描述好后,把它们放在仓库中的作用是什么呢?当其他项目需要在这些构件的基础上做开发的时候,用户就没必要自己再重新实现一遍了.直接指定坐标, ...

  7. Maven配置项目依赖使用本地仓库的方法汇总

    Maven配置项目使用本地仓库有以下方式实现: 1.类似本地仓库,但是属于本地依赖,比如某个JAR包是引用第三方的,直接放在了项目的lib文件夹,那么此时可以如下配置项目的POM: <depen ...

  8. java maven 项目依赖管理 简介

    目录 一.简单的小问题? 二.maven到底是什么? 三.maven的安装 四.仓库的概念 五.使用命令行管理maven项目 六.使用Myeclipse创建maven自定义项目 七.pom.xml的依 ...

  9. 【Groovy】Gradle 构建工具 ( 自动下载并配置构建环境 | 提供 API 扩展与开发工具集成 | 内置 Maven 和 Ivy 依赖管理 | 使用 Groovy 编写构建脚本 )

    文章目录 一.Gradle 自动下载并配置构建环境 二.Gradle 提供 API 扩展与开发工具集成 三.Gradle 内置 Maven 和 Ivy 依赖管理 四.Gradle 使用 Groovy ...

最新文章

  1. 量身定制规则引擎,适应多变业务场景
  2. Java设计模式之代理模式(Proxy)
  3. 黑客攻防:从入门到入狱_每日新闻摘要:游戏服务黑客被判入狱27个月
  4. 抱歉,程序员的工作不能用时间来衡量
  5. jwt token 过期刷新_如何在SpringBoot中集成JWT(JSON Web Token)鉴权
  6. aqara (737) -(a俩)_A-史密斯:勇士有人类已知的最强后场组合,湖人很难限制
  7. 修改php.ini没效果,修改php.ini后没有效果
  8. OpenGL驱动质量的事实现状(精简翻译版)
  9. tcp网络示例服务器端以及代码,演示
  10. 为何吾博客周排名没有数字显示?
  11. 3dmax2020软件安装教程
  12. BIOS升级之:P5QPL-AM
  13. [破解] nasca drm file -ver1.00
  14. 单播、广播、组播(多播)
  15. Threejs 设置线条宽度(lineWidth) 无效问题
  16. cdr 表格自动填充文字_常平办公软件培训分享之word表格自动填充序号
  17. QQ能上网但是浏览器上不了网
  18. 用计算机汇编语言撰写,汇编语言是一种使用助记符号表示机器指令的计算机语言...
  19. 教你如何面试进入阿里巴巴!
  20. 微信小程序引入外部矢量图标(阿里巴巴矢量图标)

热门文章

  1. 淘宝直通车关键词拖价怎么做?大神导航,一个神奇的网站,从此开启大神之路!
  2. vue框架嵌入vue-particles(粒子背景)插件
  3. 网络摄像机VC++二次开发编程
  4. 几个内核参数引起的 K8s 集群 Java 血案
  5. 雪亮工程建设标准_以“四全”标准推进“雪亮工程”
  6. Spring Boot开发中,经常听到的PO、VO、DAO、BO、DTO、POJO到底是什么?
  7. 风动,幡动,我心不动
  8. 智慧公交精华主题汇总(更新至20220902)
  9. 显示器驱动程序无法启动,改为使用Microsoft基本显示器驱动程序【已解决】
  10. iOS5开发:从程序里直接跳转到设置项的实现和代码分享(类似于金山电池医生功能,iOS5有效)