Maven 多profile及指定编译问题的解决

目录
  • Maven 多profile及指定编译
    • 要点
    • 实例
  • Maven 指定编译版本
    • javac
    • maven

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>   

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • maven profile自动切换环境参数的2种方法详解

    前言 痛点: 在java开发的过程中,我们经常要面对各种各样的环境,比如开发环境,测试环境,正式环境,而这些环境对项目的需求也不相同. 在此之前,我们往往需要手动去修改相对应的配置文件然后打成war,才能部署到相应的环境上. 但是这样很容易出现问题,因为很容易出现少改或者漏改,造成不必要的麻烦 幻想: 要是有一种东西,能让我们打war的时候指定一个参数,就能自动把项目编译成对应环境的war,那该有多幸福啊!!! 结果:这样的东西还真有,那就是maven-profile 在开发过程中,我们经常会根

  • maven profile实现多环境配置的示例

    环境:eclipse + spring mvc + maven 1.直接看图,把数据库的配置单独拿出来放在了resources_env目录下,三个不同环境参数不同, 2,在pom文件中添加配置 <profiles> <profile> <!-- 开发环境 --> <id>dev</id> <properties> <env>dev</env> </properties> <activation

  • 使用maven profile指定配置文件打包适用多环境的方法

    开发过程, 我们习惯把数据源配置, 项目常量, 日志配置等基础数据配置写到一个个单独的的文件中. 如jdbc.properties等各种.格式的文件. 如何不频繁修改配置文件, 随时打包不同基础数据配置信息的项目. 1.新建maven项目,   在pom.xml中添加 profile节点信息如下: <profiles> <profile> <!-- 开发环境 --> <id>dev</id> <properties> <envi

  • Maven 多profile及指定编译问题的解决

    目录 Maven 多profile及指定编译 要点 实例 Maven 指定编译版本 javac maven Maven 多profile及指定编译 要点 项目A依赖项目B,项目A.B都有对应的多个profile,通过mvn –P参数指定profile,只对A生效,对B不生效 项目A.B模块位于同一父项目,父项目构建时指定profile,可以传给A,B项目,A.B都使用同一指定的profile. 也可在父项目中定义属性,激活子项目profile,意即父项目 profile属性可传给各个子项目. 项

  • 使用maven的profile构建不同环境配置的方法

    最近使用到了maven的profile功能,发现这个功能的确很好用也很实用,这块的知识比较多也比较乱,其实真正理解了之后非常简单,为了巩固总结知识,有个更清晰的知识体系,本文诞生了,希望能让像我一样零基础的小白一看就懂,有请戏精,闪亮登场~~ 1.背景 作为一名猿,在实际的项目开发中,通常会有很多配置环境,比如最基本的:开发.测试.生产:不同的环境,某些文件的配置是不一样的(如:数据库连接信息.properties文件的配置等),如果我们进行开发or测试时每次都得手动去修改配置文件,难免有些麻烦

  • maven多profile 打包下 -P参和-D参数的实现

    P代表(Profiles配置文件) 在<profiles>指定的<id>中,可以通过-P进行传递或者赋值. 假如pom.xml如下 <profiles> <profile> <id>prod</id> ... </profile> <profile> <id>test</id> ... </profile> </profiles> 打包时执行mvn clean p

  • IDEA 卡住buid(编译)不动的解决办法

    [号外号外!] 最终解决办法并不复杂,关键在于"遇见问题,怎么样层层分析,多条路径试错,最终解决问题的思路或者能力"--资深码农的核心竞争力之一 背景 今天结束完最近2个月的一个项目,开心鸭,IDEA切换代码到其它历史项目继续推进.咦,什么情况,原来编译好好的,这次怎么半天编译不动,超过5分钟--原本只要10多秒或者20多秒的,什么情况 多路径尝试,层层递进,终至解决 路径A 原因分析--是不是其他软件开的多,电脑CPU和内存空闲比较少,所以build 比较慢,历史上偶尔遇见过 尝试办

  • SqlDataReader指定转换无效的解决方法

    SqlDataReader指定转换无效的解决方法,具体内容如下 //获取最新显示顺序数据 string str = string.Format(@"if exists(select ShowOrder from GIS_FuncDefaultLayer where GISFuncId = {0}) select max(ShowOrder) as ShowOrder from GIS_FuncDefaultLayer where GISFuncId ={0} else select '0' as

  • maven下mybatis-plus和pagehelp冲突问题的解决方法

    Maven库: http://repo2.maven.org/maven2/ Maven依赖查询: http://mvnrepository.com/ 解决办法: 修改pom.xml文件 排除 pagehelp 包的mybatis和mybatis-spring依赖 <!-- pagehelper --> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehe

  • 修改Maven settings.xml 后配置未生效的解决

    1. 问题描述: 自己修改了下 ${M2_HOME}/conf/settings.xml中的本地repository地址,但是重新执行mvn的时候发现repository地址并没有改变.那么问题所在? 2. settings.xml文件位置 settings.xml文件一般存在于两个位置: 全局配置: ${M2_HOME}/conf/settings.xml 用户配置: user.home/.m2/settings.xml (note:用户配置优先于全局配置.) 3. 配置优先级: 需要注意的是

  • Maven创建项目过慢的4种解决办法

    目录 解决办法1 解决办法2 解决办法3 解决方法4 在实际开发中,我们通常会用到maven的archetype插件(原型框架)来生成项目框架.但是无奈,创建时,总会卡在 [INFO] Generating project in Batch mode 等很久才构建完,有时还会报错,导致构建失败! 不多废话了,直接上解决办法吧: 解决办法1 **在创建Maven项目时加上archetypeCatalog=internal参数,点击"+"添加参数archetypeCatalog=inter

  • SpringBoot使用RedisTemplate.delete删除指定key失败的解决办法

    目录 问题概述 解决办法 问题概述 关于这个问题呢,还是主要出现在项目开发的管理上面,先描述哈项目环境: 1.Java 使用的 JDK-1.8 2.Spring Boot 使用的 Spring Boot-2.0.3 3.Redis 使用的是 2.0.8 4.Jedis 使用的是 2.9.0 (当然其它就不再描述了) 起先,使用的都是原生的 ReidsTemplate API 进行系统缓存的管理工作.后来,由于涉及到对象相关的操作,此时如果还使用原生API,缓存中的对象是一坨乱码,让人眼花缭乱,这

  • 详解Maven settings.xml配置(指定本地仓库、阿里云镜像设置)

    一.settings.xml文件会在两个目录下存在: 1.Maven安装目录(全局):%MAVEN_HOME%\conf\settings.xml 2.用户安装目录(用户):${user.home}\.m2\settings.xml 第一个是全局配置,第二个是用户配置.当两者都存在,它们的内容将被合并,特定于用户的settings.xml文件占主导地位. 如果从头开始创建用户特定的配置,可以将全局的settings.xml复制到${user.home}\.m2目录下. 我的Maven安装目录:(

随机推荐