maven管理多模块系统

 

1.创建mydemo项目
cd d:\mywork
mvn archetype:create -DgroupId=com.example.mydemo -DartifactId=mydemo

生成mydemo目录,删除该目录下src目录,修改pom.xml,将packaging值修改为:
<packaging>pom</packaging>

2. 然后分别创建mydemo-core、mydemo-web两个模块
cd mydemo
mvn archetype:create -DgroupId=www.example.mydemo.core -DartifactId=mydemo-core
mvn archetype:create -DgroupId=www.example.mydemo.web -DartifactId=mydemo-web -DarchetypeArtifactId=maven-archetype-webapp

3. 修改d:\myworkpom.xml文件,添加
<modules>
 <module>mydemo-core</module>
 <module>mydemo-web</module>
</modules>

4. 分别在mydemo-core和mydemo-web目录下的pom.xml文件中添加:

<parent>
 <groupId>cn.webwork.mydemo</groupId>
 <artifactId>mydemo</artifactId>
 <version>1.0-SNAPSHOT</version>
</parent>

5. 然后在d:\mywork\mydemo-webpom.xml中添加依赖 mydemo-core包的信息,如下:

<dependency>
  <groupId>cn.webwork.mydemo.core</groupId>
  <artifactId>mydemo-core</artifactId>
  <version>1.0-SNAPSHOT</version>
</dependency>

关于pom.xml配置文件的详细情况,请参考:
Project Setting:http://maven.apache.org/maven-model/maven.html
Introduction to POM:http://maven.apache.org/guides/introduction/introduction-to-the-pom.html

6. 创建完成后,就会分别生成两个目录,然后分别对其生成相应的eclipse工程文件,方法为:
cd mydemo-core
mvn eclipse:eclipse

cd ..
cd mydemo-web
mvn eclipse:eclipse -DdownloadSource=true -Dwtpversion=1.0 (指定wtpversion属性,用于生成wtp的工程文件)

创建完成这两个eclipse工程文件后,就可以在eclipse中打开了。

7. 回到 d:mywork目录下,执行mvn compile 就可以对这两个文件进行编译,还有mvn install ,mvn package等命令。

mydemo文件下载:
http://project.livedoor.cn/~roger/mydemo.zip

关于mvn命令:
在上面的过程中,大家看到诸如 mvn archetype:create / mvn eclipse:eclipse等这些命令,如何查询这些命令更多帮助信息?
请参考:http://maven.apache.org/plugins/index.html
其实象archetype:create eclipse:eclipse等都是maven的插件,默认安装的时候,这些插件都已经安装,还有很多第三方的插件,
具体使用方式,都可以从上面的地址中查到。

如,site插件, Generate a site for the current project 
当你执行mvn site的时候,就会自动生成一个web site,用于展示你的项目信息。

POM.XML样例:

1. 完整项目pom.xml

<?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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>de.codecentric</groupId>
    <artifactId>movie-database</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>pom</packaging>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.2.0.RELEASE</version>
    </parent>

    <name>movie-database</name>
    <description></description>

    <modules>
        <module>movie-database-actors</module>
        <module>movie-database-commons</module>
        <module>movie-database-movies</module>
        <module>movie-database-navigation</module>
        <module>movie-database-security</module>
        <module>movie-database-shop-rest</module>
        <module>movie-database-monitoring</module>
    </modules>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>de.codecentric</groupId>
                <artifactId>spring-boot-starter-admin-client</artifactId>
                <version>1.1.1</version>
            </dependency>
            <dependency>
                <groupId>de.codecentric</groupId>
                <artifactId>spring-boot-admin-server</artifactId>
                <version>1.1.1</version>
            </dependency>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.11</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.hamcrest</groupId>
                <artifactId>hamcrest-all</artifactId>
                <version>1.3</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.mockito</groupId>
                <artifactId>mockito-all</artifactId>
                <version>2.0.2-beta</version>
                <scope>test</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

</project>

2. 子模块样例pom.xml

<?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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>de.codecentric</groupId>
        <artifactId>movie-database</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>

    <artifactId>movie-database-movies</artifactId>
    <packaging>jar</packaging>

    <name>movie-database-movies</name>
    <description></description>

    <dependencies>
        <dependency>
            <groupId>de.codecentric</groupId>
            <artifactId>movie-database-commons</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>de.codecentric</groupId>
            <artifactId>movie-database-security</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>de.codecentric</groupId>
            <artifactId>spring-boot-starter-admin-client</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.webjars</groupId>
            <artifactId>bootstrap</artifactId>
            <version>2.2.1</version>
        </dependency>
    </dependencies>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <start-class>de.codecentric.MoviesApplication</start-class>
        <java.version>1.7</java.version>
    </properties>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>
时间: 2024-10-01 00:29:15

maven管理多模块系统的相关文章

Maven管理 划分模块

转载地址:juvenshun.iteye.com/blog/305865 “分天下为三十六郡,郡置守,尉,监” —— <史记·秦始皇本纪> 所有用Maven管理的真实的项目都应该是分模块的,每个模块都对应着一个pom.xml.它们之间通过继承和聚合(也称作多模块,multi-module)相互关联.那么,为什么要这么做呢?我们明明在开发一个项目,划分模块后,导入Eclipse变成了N个项目,这会带来复杂度,给开发带来不便. 为了解释原因,假设有这样一个项目,很常见的Java Web应用.在这个

使用Maven构建多模块系统

原文来自:http://www.cnblogs.com/xdp-gacl/tag/Maven%E5%AD%A6%E4%B9%A0%E6%80%BB%E7%BB%93/ 在平时的Javaweb项目开发中为了便于后期的维护,我们一般会进行分层开发,最常见的就是分为domain(域模型层).dao(数据库访问层).service(业务逻辑层).web(表现层),这样分层之后,各个层之间的职责会比较明确,后期维护起来也相对比较容易,今天我们就是使用Maven来构建以上的各个层. 项目结构如下: syst

能源企业信息化系统中的典型客户管理数据分析模块展示

客户管理数据分析模块 不同企业之间的业务差别比较大,系统功能侧重点有所不同,但都包含基本的功能模块,一般的客户管理系统功能模块可划分为营销管理.销售管理.服务管理.客户分析.供应商管理模块. 营销管理子系统对客户和市场信息进行全面的分析,对市场进行细分,产生高质量的市场策划活动,指导销售队伍更有效地工作.通过营销管理子系统可以使市场营销专业人员能够直接对市场营销活动的有效性加以计划.执行.监视和分析,能够帮助企业选择和细分客户.追踪客户联系.衡量联系结果.提供对客户直接的自动回应功能,进而实现营

使用 Maven 管理项目

最近的练手项目使用的是 Maven 在管理项目,在使用 Maven 管理项目时,三层的开发时分模块开发的,parent-dao-service-web,所有的spring+struts + Hibernate的依赖都是加在 parent 上,dao-service-web都是作为子模块,在模块之间的关系处理的时候出现了几个问题: junit测试包的传递依赖失效了 多个配置文件的读取问题 我在 parent 工程没有添加 Junit 的依赖,在编写 dao 模块是添加了 Junit 的 jar 包

java框架-----spring框架------在自己的项目中如何用maven管理spring相关jar包

1.文章内容概述: spring框架是支持maven的,因为spring框架的所有模块打包而成的jar包以及spring所依赖的其他jar包都被存放了一份在maven的中央仓库中,如果你的项目使用maven进行管理,那么你就可以在你的项目中通过maven来引入你的项目所依赖的spring相关的jar包或其他依赖库. 2.spring框架中maven相关的东西: 概述:使用maven管理spring相关的jar包,需要在pom.xml中配置groupId.artifactId之类的东西,只有在po

妈妈圈论坛的设计与实现一maven管理

该项目简要介绍: 三个工程: mama-util,mama-core,mama-core.util项目主要涉及java工具类.mama-core涉及业务逻辑处理和数据库交互,mama-front则主要包括了controller类,和前端js,css内容. 目前实现了maven管理三个工程.其中某些jar包maven库中没有,需要本地依赖. maven管理中遇到的问题解决本地依赖.可参考文章: compile(编译范围) compile 是默认的范围:如果没有提供一个范围,那该依赖的范围就是编译范

用Maven管理搭服务器管理系统(二)

用Maven创建web项目这里我就不多说了,不会的网上查找. 从今天开始搭建一套网上开源的服务器管理系统-蓝缘2.0,项目功能很简单,主要是权限管理这块,框架技术springMVC+springSecurity3.x+Mybaits3.x,项目在官网上也有展示,提供商业版,这种就属于自己卖自己的产品,不过现在网上很多好的开源项目都缺少相应的文档,说是开源,但是不分享项目业务以及项目逻辑.搭建过程以及技术框架,很多人拿到源码也是不知道怎么去用,经常会遇到部署出现问题,我并不是喷那些分享代码的人,只

ES6 的模块系统

此文为翻译,原文地址在这儿:https://hacks.mozilla.org/2015/08/es6-in-depth-modules/[转] ES6 是 ECMAScript 第 6 版本的简称,这是新一代的 JavaScript 的标准.ES6 in Depth 是关于 ES6 的一系列新特性的介绍. 遥想 2007 年,笔者开始在 Mozilla 的 JavaScript 团队工作的时候,那个时候典型的 JavaScript 程序只有一行代码. 两年之后, Google Map 被发布.

OSGi是什么:Java语言的动态模块系统(一)

OSGi是什么 OSGi亦称做Java语言的动态模块系统,它为模块化应用的开发定义了一个基础架构.OSGi容器已有多家开源实现,比如Knoflerfish.Equinox和Apache的Felix.您可以通过这些容器,把您的应用程序劈分为多个模块单元,这样,您就可以更容易地管理这些模块单元之间的交叉依赖关系. OSGi规范和Servlet规范及EJB规范类似,该规范定义了两种对象,一是容器对外提供的服务对象,另一个是容器和您的应用程序之间必须遵守的契约,其中,服务对象是容器要实现的.您如果想要在