精华内容
下载资源
问答
  • 这是上篇文章,Maven 环境打包以及聚合打包(一)的后续 开发中碰到的问题 2 在实际开发中,我们经常将代码分层,会形成类似的项目结构。 这时候使用 Maven 打包,就需要一个一个的打包,这样就比较麻烦,有时候...

    说明

    这是上篇文章,Maven 多环境打包以及聚合打包(一)的后续

    开发中碰到的问题 2

    在实际开发中,我们经常将代码分层,会形成类似的项目结构。
    项目结构
    这时候使用 Maven 打包,就需要一个一个的打包,这样就比较麻烦,有时候打包也可能忘了打更新包,因此这里讲一下如何聚合打包。

    Maven 聚合打包

    1. 新建一个空的 Maven 项目。
      新建项目
      在选择 Packaging 时选择 pom
      新建项目
    2. 修改 pom.xml 文件
      pom.xml 文件的 Overview 下的 Modules 项目下选择添加自己的项目
      添加子项目
    3. 此时就可以用 Eclipserun as 里面 的 maven install 命令打包了,也可以使用 maven build...Goals 中执行 mvn 命令

    展开全文
  • 参考文章:Maven 插件 - 打包环境配置文件设置Maven 环境打包maven 环境打包发布的两种方式 开发中碰到的问题1 现在采用 spring boot 开发时,spring boot 开发的配置文件结构目录,如下图所示: 这样...

    说明

    本文只是一个总结
    参考文章:
    Maven 插件 - 打包时多环境配置文件设置
    Maven 多环境打包
    maven 多环境打包发布的两种方式

    开发中碰到的问题1

    现在采用 spring boot 开发时,spring boot 开发的配置文件结构目录,如下图所示:

    配置结构

    这样有个好处是配置文件可以分开,公用的配置项可以放在 application.properties 文件里面,再通过 spring.profiles.active 配置项来激活 各个环境的配置项,在使用 spring cloud config 之后,可能还会多一个 bootstrap.properties , 这个文件无法支持多环境配置 , 所以每次在使用 maven 构建打包时,总会手动去改大量配置,这样打包时,可能忘记修改某个配置而导致最后发布的包出现问题。所以我们需要用到使用 maven 进行多环境打包。

    Maven 多环境打包

    1. 修改 pom.xml

    pom.xml 文件中 添加 <profiles></profiles> 标签,然后 在此标签中加入<profile></profile>标签进行多环境配置。

    <profiles>
            <!-- 测试环境 -->
            <profile>
                <id>test</id>
                <activation>
                    <activeByDefault>true</activeByDefault>
                </activation>
                <properties>
                    <spring.profiles.active>test</spring.profiles.active>
                </properties>
            </profile>
            <!-- 开发环境 -->
            <profile>
                <id>dev</id>
                <activation>
                    <activeByDefault>false</activeByDefault>
                </activation>
                <properties>
                    <spring.profiles.active>dev</spring.profiles.active>
                </properties>
            </profile>
            <!-- 生产环境 -->
            <profile>
                <id>pro</id>
                <activation>
                    <activeByDefault>false</activeByDefault>
                </activation>
                <properties>
                    <spring.profiles.active>pro</spring.profiles.active>
                </properties>
            </profile>
    </profiles>
    

    其中 <activeByDefault></activeByDefault> 标签为true 时表示默认配置,通过 eclipse 执行 run asmaven install 时,默认使用 activeByDefaulttrue 的配置。
    同时需要在 pom.xml 文件中的 <build></build> 标签中加入:

    <build>
            <resources>
                <resource><!-- 扫描替换 -->
                    <directory>${project.basedir}/src/main/resources</directory>
                    <filtering>true</filtering>
                </resource>
            </resources>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    

    用来指定打包时,去替换指定文件下的配置,这样 pom.xml 配置完成。

    修改 properties 文件

    修改 properties 文件就特别简单了,将在 pom.xmlprofileproperties 直接替换就行了。

    spring.profiles.active=@spring.profiles.active@
    

    打包

    此时如果执行 eclipse 中的 maven install 则会打包成默认的配置项。

    eclipse run as 面板

    但是通过 运行 maven build...

    maven build...

    Goals 中执行 clean install -P pro 则可打包其他环境。

    展开全文
  • 二、删除项目中的src目录,把pom.xml中的项目打包方式改为pom,如下: com.example springboot-multi 0.0.1-SNAPSHOT pom 三、创建springboot-multi项目的子模块,在项目上右键单击,选择:new -> Module。 四...

    主项目 springboot-multi
    子模块 entity、dao、service、web

    二、删除项目中的src目录,把pom.xml中的项目打包方式改为pom,如下:

    com.example
    springboot-multi
    0.0.1-SNAPSHOT

    pom
    三、创建springboot-multi项目的子模块,在项目上右键单击,选择:new -> Module。

    四、创建四个子模块后,删除子模块中 src/main/java、src/main/java下的所有文件(如果没有文件跳过此操作),只保留web子模块的SpringBoot的Application主启动类。

    五、主项目pom.xml (注意标签是否指定了子模块)

    <modelVersion>4.0.0</modelVersion>  
      <groupId>com.example</groupId> 
      <artifactId>springboot-multi</artifactId> 
      <version>0.0.1-SNAPSHOT</version> 
      <!-- 此处改为pom --> 
      <packaging>pom</packaging> 
     
      <name>springboot-multi</name> 
      <description>Demo project for Spring Boot</description> 
     
      <modules> 
        <module>web</module> 
        <module>service</module> 
        <module>dao</module> 
        <module>entity</module> 
      </modules> 
     
      <parent> 
        <groupId>org.springframework.boot</groupId> 
        <artifactId>spring-boot-starter-parent</artifactId> 
        <version>1.5.10.RELEASE</version> 
        <relativePath/> <!-- lookup parent from repository --> 
      </parent> 
     
      <properties> 
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> 
        <java.version>1.8</java.version> 
      </properties> 
     
      <dependencies> 
        <dependency> 
          <groupId>org.springframework.boot</groupId> 
          <artifactId>spring-boot-starter-web</artifactId> 
        </dependency> 
      </dependencies> 
     
      <!--指定使用maven打包--> 
      
    <build> 
        <plugins> 
          <plugin> 
            <groupId>org.apache.maven.plugins</groupId> 
            <artifactId>maven-compiler-plugin</artifactId> 
            <version>3.1</version> 
            <configuration> 
              <source>${java.version}</source> 
              <target>${java.version}</target> 
            </configuration> 
          </plugin> 
     
          <plugin> 
            <groupId>org.apache.maven.plugins</groupId> 
            <artifactId>maven-surefire-plugin</artifactId> 
            <version>2.19.1</version> 
            <configuration> 
              <skipTests>true</skipTests>  <!--默认关掉单元测试 --> 
            </configuration> 
          </plugin> 
        </plugins> 
      </build>
    六、web子模块pom.xml(依赖service、dao、entity子模块) 
    
    <modelVersion>4.0.0</modelVersion>  
      <groupId>com.example</groupId> 
      <artifactId>web</artifactId> 
      <version>0.0.1-SNAPSHOT</version> 
      <packaging>jar</packaging> 
     
      <name>web</name> 
      <description>Demo project for Spring Boot</description> 
     
      <parent> 
        <groupId>com.example</groupId> 
        <artifactId>springboot-multi</artifactId> 
        <version>0.0.1-SNAPSHOT</version> 
        <relativePath>../pom.xml</relativePath> 
      </parent> 
     
      <dependencies> 
        <dependency> 
          <groupId>com.example</groupId> 
          <artifactId>service</artifactId> 
          <version>0.0.1-SNAPSHOT</version> 
        </dependency> 
        <dependency> 
          <groupId>com.example</groupId> 
          <artifactId>dao</artifactId> 
          <version>0.0.1-SNAPSHOT</version> 
        </dependency> 
        <dependency> 
          <groupId>com.example</groupId> 
          <artifactId>entity</artifactId> 
          <version>0.0.1-SNAPSHOT</version> 
        </dependency> 
      </dependencies> 
     
      <!--spring boot打包的话需要指定一个唯一的入门--> 
      <build> 
        <plugins> 
          <plugin> 
            <groupId>org.springframework.boot</groupId> 
            <artifactId>spring-boot-maven-plugin</artifactId> 
            <configuration> 
              <!-- 指定该Main Class为全局的唯一入口 --> 
              <mainClass>com.example.WebApplication</mainClass> 
              <layout>ZIP</layout> 
            </configuration> 
            <executions> 
              <execution> 
                <goals> 
                  <goal>repackage</goal><!--可以把依赖的包都打包到生成的Jar包中--> 
                </goals> 
              </execution> 
            </executions> 
          </plugin> 
        </plugins> 
      </build>
    七、service子模块pom.xml(依赖 dao 、entity子模块)
    
    <modelVersion>4.0.0</modelVersion> 
     
      <groupId>com.example</groupId> 
      <artifactId>service</artifactId> 
      <version>0.0.1-SNAPSHOT</version> 
      <packaging>jar</packaging> 
     
      <name>service</name> 
      <description>Demo project for Spring Boot</description> 
     
      <parent> 
        <groupId>com.example</groupId> 
        <artifactId>springboot-multi</artifactId> 
        <version>0.0.1-SNAPSHOT</version> 
        <relativePath>../pom.xml</relativePath> 
      </parent> 
     
      <dependencies> 
        <dependency> 
          <groupId>com.example</groupId> 
          <artifactId>dao</artifactId> 
          <version>0.0.1-SNAPSHOT</version> 
        </dependency> 
        <dependency> 
          <groupId>com.example</groupId> 
          <artifactId>entity</artifactId> 
          <version>0.0.1-SNAPSHOT</version> 
        </dependency> 
      </dependencies>
    八、dao子模块pom.xml (依赖entity子模块) 
    
    <modelVersion>4.0.0</modelVersion> 
     
    <groupId>com.example</groupId> 
    <artifactId>dao</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>jar</packaging> 
     
    <name>dao</name> 
    <description>Demo project for Spring Boot</description> 
     
    <parent> 
      <groupId>com.example</groupId> 
      <artifactId>springboot-multi</artifactId> 
      <version>0.0.1-SNAPSHOT</version> 
      <relativePath>../pom.xml</relativePath> 
    </parent> 
     
    <dependencies> 
      <dependency> 
        <groupId>com.example</groupId> 
        <artifactId>entity</artifactId> 
        <version>0.0.1-SNAPSHOT</version> 
      </dependency> 
    </dependencies>
    九、entity子模块
    
    <modelVersion>4.0.0</modelVersion> 
     
    <groupId>com.example</groupId> 
    <artifactId>entity</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>jar</packaging> 
     
    <name>entity</name> 
    <description>Demo project for Spring Boot</description> 
     
      <parent> 
        <groupId>com.example</groupId> 
        <artifactId>springboot-multi</artifactId> 
        <version>0.0.1-SNAPSHOT</version> 
        <relativePath>../pom.xml</relativePath> 
      </parent>
    十、pom.xml文件中需要注意的就是:
    
    主项目的modules标签指定的子模块是否正确
    子模块之间的依赖
    子模块的parent标签
    十一、web子模块的Application启动类:
    
    @RestController 
    @SpringBootApplication 
    public class WebApplication { 
     
      public static void main(String[] args) { 
        SpringApplication.run(WebApplication.class, args); 
      } 
     
      @RequestMapping(value = "/test",method = RequestMethod.GET) 
      public String test(){ 
        return "test success"; 
      } 
    }
    
    展开全文
  • MAVEN聚合

    2020-07-17 20:52:23
    当项目特别时,我们总是需要对每一个maven项目进行编译,测试,打包,安装,发布的操作命令执行一次,这样是非常复杂的,可以利用maven聚合来解决 2.聚合的意义 当使用父子继承关系来开发时,一定会存在大量的子工程,...

    1.概述

    当项目特别多时,我们总是需要对每一个maven项目进行编译,测试,打包,安装,发布的操作命令执行一次,这样是非常复杂的,可以利用maven的聚合来解决

    2.聚合的意义

    当使用父子继承关系来开发时,一定会存在大量的子工程,这时对于子工程可以使用maven的聚合工程来实现一键执行命令.所以聚合就是统一命令的操作

    3.聚合的实现

     如果我们想要使用一个工程,通过对这个工程命令执行,就能够同时执行其他多个工程的同一个命令,这个工程就是聚合工程,在聚合工程中我们只需要添加一个<modules>标签,配置若干个<module>标签指向其他工程路径就可以完成.聚合工程的packaging类型也得是pom

    <modules>
    
        <module>maven-child</module>
    
    </modules>

    这个标签的含义就是,当前工程可以管理maven-child,其项目目录是个相对路径,相对当前聚合工程的根目录.也可以使用绝对路径,或其他路径表示聚合.

    4.idea中的maven聚合

    由于idea存在聚合工程的概念,所以一旦使用maven工程右键new一个module会自动在当前工程添加聚合标签<modules>和<parent>标签,这些也可以通过构建项目时的基本信息填写去除掉.

     

    (没有父子关系也能聚合,但是一般都会去父工程中做聚合,这样就可以按照父子关系依次执行) 

    我们在今后的开发过程中总会通过在一个父级工程中创建module聚合子工程来管理所有的代码项目结构.

     

    展开全文
  • 已我最近自己在玩的一个DEMO为例 taosir为pom.xml,其他子项目均为其modules,且为jar项目 ...所以此处我需要将eureka、workflow、entrance三个打包成jar,那么它们的pom.xml文件中需加入 <build...
  • maven 环境打包发布的两种方式

    万次阅读 2017-03-20 13:36:57
    maven 聚合工程的创建 第一种方式 不同环境打包的配置 开发中的使用 本地开发环境 开发环境 测试环境 生产环境 ...maven 命令打包 ... 集合工程中 maven环境打包发布 在一个项目的开发过程中,我们...
  • Maven聚合

    2019-02-28 16:12:10
    聚合一般是一个工程拆分成个模块开发,每个模块是一个独立的工程,但是要是运行时必须把所有模块聚合到一起才是一个完整的工程,此时可以使用maven聚合工程。 例如电商项目中,包括商品模块、订单模块、用户...
  • 其他子项目均为其modules,且为jar项目eureka为注册中心、workflow为提供者、entrance为调用方entrance、workflow依赖于common所以此处我需要将eureka、workflow、entrance三个打包成jar,那么它们的pom.xml文件中需...
  • 1.模块聚合 模块聚合的项目也被称为聚合项目,一般情况下由一个父模块和若干个子模块组成。 其中,父模块必须以pom打包类型,同时以给出所有的子模块。父模块的POM示例如下: ... //pom 是最简单的打包类型,...
  • Maven聚合项目模块打包,打不进其他工程包 1、比如:Zuul项目里面引用Common公共工程,打包报错找不到这个公共工程里面某些方法,解决方案如下: 在Common工程的Pom里面添加上下面这段代码 <build> <...
  • maven聚合和继承

    2017-12-20 22:08:19
    我需要将这三个项目打包发布到本地仓库,按照一般的做法,我会一个一个的右键:run as-->Maven build--->install,然后等待控制台出现build success,那么如果我有8个、10个甚至更maven项目需要打包发布,...
  • Maven 聚合

    2021-04-20 13:36:35
    Maven 聚合,本身是用来批量构建(编译、打包、测试…)个项目。 但实际开发中,一般很少单独使用,更的时候是和 maven 继承一起,实现模块管理。 因为继承和聚合经常联合使用,导致很多人分不清两者的边界。...
  • 作用:聚合用于快速构建maven工程,一次性构建个项目/模块,便于批量进行项目的打包等操作 制作方式: ​ 创建一个空模块,打包类型定义为pom <packaging>pom</packaging> ​ 定义当前模块进行构建...
  • 1、maven web聚合模块)项目 1.1、创建父工程(依赖管理) 不使用模板 修改项目名称与位置 删除src 1.2、创建子模块 右击父模块 不选择模板 设置项目的父模块以及项目名、位置 按照上面步骤创建如下的项目...
  • Maven聚合和继承

    热门讨论 2017-02-19 09:11:06
     我们想一次构建两个项目,而不是到两个模块的目录下分别执行mvn命令,Maven聚合模块)这一特性为该需求服务;  用于聚合的模块,本身是一个Maven项目,有自己的POM文件;它的打包packagin
  • maven聚合

    2021-03-05 17:09:50
    聚合Maven项目能够识别的依赖: 自身包含、本地...在一个总工程中配置聚合聚合的配置 只能配置在(打包方式“packaging”为pom)的Maven工程中) 在pom的maven工程中引入maven1和maven2项目的根路径 <modules&
  • maven聚合和继承

    2018-01-09 11:37:43
    maven聚合工程时为了方便管理,可能一个工程有个子模块,这时可以创建聚合工程管理. maven继承是为了方便jar包管理,比如:可能A B C三个工程都需要junit jar包,在每个工程添加jar包依赖会显得重复,这时只需要建立一...
  • 一般用于分模块开发,最后整体打包发布,聚合项目一定是父子工程,而父子工程不一定是聚合工程。 为什么要使用聚合? 将个工程拆分为模块后,需要手动逐个安装到仓库后依赖才能够生效。修改源码后也需要逐个手动...
  • 多数情况下,我们使用maven管理个子工程,在最后maven打包阶段将个子工程聚合到一个jar或war包。单个子工程会有自己独立的资源配置文件,在打包的时候我们需要将其聚合在一起(各子工程中的配置文件名称不能重复...
  • 聚合工程里可以分为顶级项目(顶级工程、父工程)与子工程,这两者的关系其实就是父子继承的关系子工程在maven里称之为模块(module),模块之间是平级,是可以相互依赖的。 子模块可以使用顶级工程里所有的资源...
  • maven聚合和继承

    2018-08-30 00:06:06
    在实际使用maven构建项目的时候,可能会遇到下面的问题: ...我们需要新建一个聚合maven项目,这个项目本身没有任何业务的逻辑,只是单纯负责打包其他模块的。下面是一个例子: 假设项目里现在有data模...
  • maven创建聚合项目

    2018-01-17 14:58:44
    首先建父项目 建立子项目1 ,web ...点击Finish子项目建立完成,可以添加个 ...打包 只需要在父项目上右击, 然后每个子项目都会自动打war包了 复制出来 放tomcat下就可以运行了
  • module的maven项目中,如果每次打包整个工程显得有些冗余和笨重。 例如A,B,C的继承关系为 C | —– A | —– B 即P包含A,B的module,每次打包P都会将A,B都打包。 假如我只修改了A模块,那么每次都要将B都一块...
  • 关于maven聚合

    2014-06-18 16:27:00
    1、经理让我使用模块搭建框架,供开发小组其他人使用,避免出现以前开发项目时出现的错误。 2、经理 的意思是说,创建6个项目 其中两个项目是用来打包的,另外的几个项目,进行模块划分。 3、我疑惑就是,我们四...
  • maven 父子项目 聚合与继承 生命周期 打包插件 依赖打包 jar pom war 2016年03月04日 21:40:55 u013378306 阅读数:19218更 个人分类: maven 版权声明:针对本篇博客提供有偿解决问题,可联系qq:...
  • maven中可能把一个项目切分成个子项目,如果想要编译打包需要一个一个的进行,这样很不方便,所以我们会采用一个集中管理的方式,也就是建立一个包含所有子项目的pom.xml文件来集中管理,方式如下: ...
  • 整整搞了一天,终于解决这个问题了。这里是四个module,module之间存在...聚合maven+spring-boot打包成可执行jar就不是那么容易了,主要是因为spring-boot的坑有点啊。普通聚合maven打包我就不说了。就说说和spr...

空空如也

空空如也

1 2 3 4 5 ... 10
收藏数 197
精华内容 78
关键字:

maven多聚合打包