是否可以使用 mule 上的 maven 配置文件动态更改 http 请求主机值?

Is it possible to dynamically change http request host value using maven profile on mule?

我是 MuleSoft 的新手。我创建了一个 Maven Mule 项目,我的一个流程有组件 Http Request。该组件具有属性 "host"。但是,我有 2 个环境:测试和生产。是否可以根据在 Maven 上创建的配置文件动态更改 "host" 属性值?

好问题!您实际寻找的是特定于环境的配置。

Mule 基于 Maven 配置文件构建并提供开箱即用 (OOTB)

看看这个link

总结如下配置http端点

<http:listener-config name="HttpListenerConfiguration"
                    doc:name="HTTP Listener Configuration"
                    host="${mule.env.host}"
                    port="${mule.env.port}"
                    basePath="${mule.env.path}" />

然后有一个特定于环境的 属性 文件

qa.basePath=test/products
qa.host=localhost
qa.port=8082

prod.basePath=products
prod.host=www.acme.com
prod.port=8081

在构建时,您将指定您正在为特定环境构建,并且这些特定值将在您的配置中被替换

更新:根据 Maven 配置文件选择 属性 文件

创建特定于环境的 属性 文件,因此您的项目结构和 pom.xml 将如下所示

我确实记得在资源部分遇到了一些麻烦,因此将相关部分粘贴到此处

<plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>build-helper-maven-plugin</artifactId>
                <version>1.7</version>
                <executions>
                    <execution>
                        <id>add-resource</id>
                        <phase>generate-resources</phase>
                        <goals>
                            <goal>add-resource</goal>
                        </goals>
                        <configuration>
                            <resources>
                                <resource>
                                    <directory>src/main/app/</directory>                                    
                                </resource>
                                <resource>
                                    <directory>mappings/</directory>
                                </resource>
                                <resource>
                                    <directory>src/main/api/</directory>
                                </resource> 
                                <resource>
                                    <directory>src/test/resources/</directory>                                  
                                </resource>                             
                            </resources>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

你的 mule-project.xml 应该如下所示

排序后,只需在您的 Maven 构建中选择一个配置文件

mvn clean compile package -P qa

@Sudarshan 帮了我大忙!但是,maven 解决方案不起作用。我所做的是:

在maven上,我添加了以下插件:

<plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>properties-maven-plugin</artifactId>
            <version>1.0-alpha-2</version>
            <executions>
                <execution>
                    <phase>generate-resources</phase>
                    <goals>
                        <goal>write-active-profile-properties</goal>
                    </goals>
                    <configuration>
                        <outputFile>
                            ${project.build.outputDirectory}/conf-app.properties
                        </outputFile>
                    </configuration>
                </execution>
            </executions>
        </plugin>

要在 Maven 上创建配置文件,我所做的是:

    <profile>
        <id>qa</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <properties>
            <host>999.999.999.999</host>
            <port>8080</port>
            <basePath>/v1</basePath>
        </properties>
    </profile>
</profiles>

然后,在位于 src/main/app 的 xml 流程中,我的 HTTP 请求如下:

<http:request-config name="HTTP_Request_Configuration" host="${host}" port="${port}" basePath="${basePath}" doc:name="HTTP Request Configuration"
    connectionIdleTimeout="180000" />

要运行创建的配置文件,在maven上使用以下命令:

mvn clean package -Paq -X

在那之后,你就可以开始了!