您现在的位置是:网站首页 > 代码编程 > JAVA开发JAVA开发

【原】Maven打包环境切换了,但是复制文件失败

不忘初心 不忘初心 2019-04-02 围观() 评论() 点赞() JAVA开发

简介:在Maven工程中,如果涉及到多环境切换,可以指定profile变量来控制,平时也都是这么用的,但是最近朋友的电脑却出现了一个问题,设置了profile不起作用

在Maven工程中,如果涉及到多环境切换,可以指定profile变量来控制,平时也都是这么用的,但是最近朋友的电脑却出现了一个问题,设置了profile不起作用,有一个项目在打包的时候一直都是拷贝第一个配置文件中的内容,就算是指定了其他profile的激活状态也不行,更诡异的地方在于:同一台机器,同一套maven配置,其他项目打包都是正常的,就是这个项目不行

<profiles>
    <profile>
        <id>dev</id>
        <properties>
            <package.environment>dev</package.environment>
        </properties>
        <activation>
            <activeByDefault>false</activeByDefault>
        </activation>
    </profile>
    <profile>
        <id>prod</id>
        <properties>
            <package.environment>prod</package.environment>
        </properties>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
    </profile>
    <profile>
        <id>test</id>
        <properties>
            <package.environment>test</package.environment>
        </properties>
        <activation>
            <activeByDefault>false</activeByDefault>
        </activation>
    </profile>
</profiles>

如上配置,指定了生产环境生效,开发和测试环境不生效,在我的机器上也是没问题的,打包也正常,但是在朋友的电脑上,不管如何配置,打包时总是会使用dev环境的配置文件,而且改了这个配置之后,idea右侧的Maven工具栏也不会变动:

Maven打包环境切换了,但是复制文件失败

上图是我的机器中的效果,但是在朋友的电脑中,profiles勾选的永远是dev选项。。。

查了一下资料,看到有人提到说settings.xml指定了全局激活选项,跑去一看,他的配置文件中还真的写了一个默认的值:

<activeProfiles>
    <activeProfile>dev</activeProfile>
</activeProfiles>

把这个东西去掉之后,再次改动pom.xml文件中的profile选项,此时,idea右侧的Maven工具栏有变化了,能根据配置的激活项自动勾选,高兴的一批,跟朋友吹牛说问题解决了,结果分分钟打脸,右侧工具栏虽然变了,但是打出来的war包中,配置文件依旧还是dev环境的,也就是说pom.xml中的profile还是没有生效。

无奈之下,甚至删了项目重新导入,都还是不行。后来在一起吃饭的时候,朋友的同事提到了一句,可能是compiler编译工具的问题,当时没太放在心上,但是后来朋友告诉我说,他把版本改了之后,问题真的解决了,让我感到非常不可思议,果断跑去看了一下项目,出问题的项目是一个多包的工程,父工程中配置了一个compiler插件,子工程中也配置了一个compiler插件,版本号确实写得不一样。

父工程:3.3

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.3</version>
    <configuration>
        <encoding>UTF-8</encoding>
        <source>1.8</source>
        <target>1.8</target>
    </configuration>
</plugin>

子工程:3.1

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.1</version>
    <configuration>
        <source>1.8</source>
        <target>1.8</target>
        <encoding>UTF-8</encoding>
    </configuration>
</plugin>

朋友说他将子工程中的compiler版本号也改为了3.3,之后打包就没有这个问题了。。。

问题虽然解决了,但是还是没太明白为什么,因为项目是同一个,要是有问题,那应该在我的机器上也会有问题,但是偏偏就是只有他的机器上不行。

问题总结如下:

1、settings.xml中的全局配置,指定了默认的激活选项;

2、项目是maven多包工程,父子工程的compiler编译插件版本不一致;

mavenpom

看完文章,有任何疑问,请加入群聊一起交流!!!

很赞哦! ()

文章评论

  • 请先说点什么
    人参与,条评论

请使用电脑浏览器访问本页面,使用手机浏览器访问本页面会导致下载文件异常!!!

雨落无影

关注上方公众号,回复关键字【下载】获取下载码

用完即删,每次下载需重新获取下载码

若出现下载不了的情况,请及时联系站长进行解决

站点信息

  • 网站程序:spring + freemarker
  • 主题模板:《今夕何夕》
  • 文章统计:篇文章
  • 标签管理标签云
  • 微信公众号:扫描二维码,关注我们