首页   >   代码编程

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

在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编译插件版本不一致;

QQ群: 686430774  /  718410762

站长Q: 1347384268

如果文章有帮到你,可以考虑请博主喝杯咖啡!

分享到:

欢迎分享本文,转载请注明出处!

作者:不忘初心

发布时间:2019-04-02

永久地址:https://www.jiweichengzhu.com/article/1a096eb2186845eba5b58d488bdb94eb

评论