Maven 多profile及指定编译问题的解决
作者:hongweigg 发布时间:2022-04-22 23:43:24
Maven 多profile及指定编译
要点
项目A依赖项目B,项目A、B都有对应的多个profile,通过mvn –P参数指定profile,只对A生效,对B不生效
项目A、B模块位于同一父项目,父项目构建时指定profile,可以传给A,B项目,A、B都使用同一指定的profile。
也可在父项目中定义属性,激活子项目profile,意即父项目 profile属性可传给各个子项目。
项目中定义的profile, 若<activeProfileDefault>设置为false,则不指定profile的情况下,该profil不会被执行。
实例
项目A 定义2个profile(aprofile、bprofile), 项目B定义2个对应的profile(aprofile、bprofile),则可将项目A、B中的aprofile激活方式设置为:
<activeProfileDefault>true</activeProfileDefault>
bprofile profile激活方式设置为:
<activation>
<property>
<name>bprofile</name>
</property>
</activation>
编译项目A时使用参数可编译bprofile版本:
mvn clean install -Dbprofile
编译项目A时不带参数可编译aprofile版本:
mvn clean install
Maven 指定编译版本
javac
先从javac的编译选项-source,-target说起:
-
source
:指定使用什么版本的JDK语法编译源代码。java语法总是向后兼容的,为何需要设置呢?不晓滴-
target
:指定生成特定于某个JDK版本的class文件。高版本的class文件不被低版本支持,因此需要该项。注意,最好设置-bootclasspath指定对应JDK版本的boot classes文件,否则即使设置了-target也不能在指定版本上运行class文件
一般情况下,-target与-source设置一致,可以不用设置-target,但最好设置它。
maven
maven中可以指定JDK编译版本,还需要确定一下IDE中JDK的使用版本。
在最新的maven中,默认编译版本为1.6,所以需要自己设置为指定版本。
设置有两种方式:
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
或
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
两种一致,都是使用maven-compiler-plugin实现的,插件会在编译时添加source,target选项。通过插件可以配置更多的选项。
在Java 9后,新增了选项release,同时指定编译和输出时的JDK版本。也能配置插件,但这里仅给出方便的方式:
<properties>
<maven.compiler.release>9</maven.compiler.release>
</properties>
在spring boot中,有独属于它自己的配置方式,它也是通过插件实现的(spring boot项目默认添加了):
<properties>
<java.version>1.8</java.version>
</properties>
来源:https://blog.csdn.net/hongweigg/article/details/106576883


猜你喜欢
- 本文实例讲述了C#日期格式字符串的相互转换操作。分享给大家供大家参考,具体如下:方法一:Convert.ToDateTime(string)
- 简单了解计算机为什么要采用二进制表示信息:因为计算机作为一种电子计算机工具,是由大量的电子器件组成的,在这些电子器件中,电路的通断,电位的高
- 所谓回调,就是客户程序C调用服务程序S中的某个方法A,然后S又在某个时候反过来调用C中的某个方法B,对于C来说,这个B便叫做回调方法。下面看
- 1、数组的定义先声明后使用数据类型 [] 数组名称 = new 数据类型[长度];String[] arr3 = new String[5]
- package com.cjonline.foundation.cpe.action;import java.io.ByteArrayInp
- 本文实例为大家分享了Android九宫格图片展示的具体代码,供大家参考,具体内容如下XML布局主页面main布局<com.handma
- 安装 Tomcat 之前请一定先安装 Java ,然后才能安装 Tomcat 。安装 Java 、环境变量 path 的设置以及 cmd 小
- 静态变量静态变量位于栈上,它是一个全局变量,在编译期就已经生成。public class Cow{public static int cou
- 崩溃来源使用过AIDL进行跨进程通信的同学,肯定遇到过DeadObjectException这个崩溃,那么这个崩溃是怎么来的,我们又该如何解
- 前言我们书接上文,我们在了解LINQ下面有说到在本地查询IEnumerbale主要是用委托来作为传参,而解析型查询IQueryable则用E
- 前几篇主要集中在注册中心eureka的使用上,接下来可以创建服务提供者provider来注册到eureka。demo源码见: https:/
- 1.导入jar包: <!--jmsTemplate--> <dependency> <
- 在android studio中存储数据有三个方法,分别是:(1)简单存储——SharedPreferences(2)文件存储:内部存储——
- 本文实例讲述了java取两个字符串的最大交集的实现方法,分享给大家供大家参考。具体实现方法如下:package com.itheima.ne
- android:id 为控件指定相应的ID android:text 指定控件的文本,置尽量使用strings.xml android:gr
- 一.一维数组的定义1.创建数组数组定义有三种方法:int[] array1 = new int[10];//前面的int[]为数组的类型,后
- Springboot获取上下文ApplicationContext在项目中遇到了一个场景,就是通过获得上下文然后获取特定的bean。在此遇到
- 桥接模式概述桥接模式(Bridge Pattern)也称为桥梁模式、接口(Interfce)模式或柄体(Handle and Body)模式
- 前言在Android开发过程中,我发现很多安卓源代码里应用了设计模式,比较常用的有适配器模式(各种adapter),建造者模式(Alert
- SnowFlake 算法,是 Twitter 开源的分布式 id 生成算法。其核心思想就是:使用一个 64 bit 的 long 型的数字作