相关疑难解决方法(0)

为什么我无法从其他配置文件激活Maven2配置文件?

我有一个多模块Maven2项目,它构建一个Web应用程序.应用程序连接到后端服务器和数据库.在我们的环境中部署了多个服务器实例,并且还有多个后端和数据库实例用于开发,UAT,生产等.因此,实际上,每个应用程序配置都需要以下3个坐标:

  • 前端服务器
  • 后端服务器
  • D B

我正致力于统一和自动化应用程序配置.将这些不同的配置表示为Maven中的配置文件是很容易和明显的.然后,我可以通过激活每个组中的一个配置文件来创建特定配置,例如

mvn -Pserver.Server1,backend.prod,db.uat clean install
Run Code Online (Sandbox Code Playgroud)

键入和容易出错有点繁琐 - 如果特定服务器配置错误连接到错误的数据库,价格可能会很高.解决此问题的一种显而易见的方法是将所有有用的配置文件组合放入脚本文件中.

但我认为通过直接从服务器配置文件激活必要的后端和数据库配置文件,我可以比这更聪明.服务器配置文件位于主pom中,例如

<profile>
    <id>server.myserver</id>
    <properties>
        <jboss.home>D:\Programs\jboss-4.2.1.GA</jboss.home>
        <server.name>NightlyBuild</server.name>
        <hosttobind>192.168.1.100</hosttobind>
        <servlet.port>8080</servlet.port>
        ...
        <db>dev02</db>
    </properties>
</profile>
Run Code Online (Sandbox Code Playgroud)

并且后端和DB配置文件位于Config子模块的pom中,例如

<profile>
    <id>db.dev02</id>
    <activation>
        <property>
            <name>db</name>
            <value>dev02</value>
        </property>
    </activation>
    <properties>
        <jdbc.address>jdbc:oracle:thin:@192.168.0.101:1521:dbdev02</jdbc.address>
    </properties>
</profile>
Run Code Online (Sandbox Code Playgroud)

因此在理论上,由于server.myserver配置文件将db属性设置为dev02,这应该触发db.dev02子pom 中的配置文件的激活.但是,这不会发生.(如果两个轮廓在同一个pom中,也不是btw).如果我从命令行设置属性

mvn -Ddb=dev02 help:active-profiles
Run Code Online (Sandbox Code Playgroud)

然后,配置文件被激活,显然我没有拼错任何东西.

我忽略了什么吗?有没有其他方法可以使这项工作?

我看到存在类似的问题:我可以让一个maven配置文件激活另一个吗?
但是,恕我直言,这不是重复 - 我看到我的方法不起作用,我想了解原因.(我已阅读参考资料,但我可能忽略了一些明显的事情).

profile maven-2 activation

16
推荐指数
2
解决办法
1万
查看次数

maven profile依赖

我有一个maven模块,有2个配置文件profile-a和profile-b

profile-a可以独立使用,但profile-b应该与profile-a一起运行

mvn install -P profile-a                   // valid
mvn install -P profile-a,profile-b         // valid
mvn install -P profile-b                   // INVALID
Run Code Online (Sandbox Code Playgroud)

反正是为了确保用户不能只使用profile-b安装模块?如果profile-b单独使用,还是自动激活配置文件-a?

maven-2 profiles maven

10
推荐指数
1
解决办法
5901
查看次数

从父配置文件激活子配置文件

我有以下父pom.xml文件:

<profile>
    <id>build_full</id>
    <activation>
        <activeByDefault>true</activeByDefault>
    </activation>
    <modules>
        <module>mymodule_interface</module>
        <module>mymodule_switch</module>
        <module>mymodule_switch_simulator</module>
        <module>mymodule_switch_controller</module>
        <module>mymodule_server</module>
    </modules>
</profile>
Run Code Online (Sandbox Code Playgroud)

在我的孩子pom中mymodule_server,我有以下几点:

<profile>
    <id>subprofile</id>
    <modules>
        <module>...various modules...</module>
    </modules>
</profile>  
<profile>
    <id>default</id>
    <activation>
        <activeByDefault>true</activeByDefault>
    </activation>
    <modules>
        <module>...various modules...</module>
    </modules>
</profile>  
Run Code Online (Sandbox Code Playgroud)

当我调用maven:时 mvn -P build_full,我可以强制子模块(mymodule_server)使用配置文件subprofile而不是default吗?

maven-3 maven maven-profiles

9
推荐指数
1
解决办法
4347
查看次数