1

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

4

2 回答 2

2

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

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

看看这个链接

总结如下配置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 将如下所示

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 应如下所示

骡子项目.xml

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

mvn clean 编译包 -P qa

于 2015-08-03T22:48:38.893 回答
1

@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

在那之后,你会很高兴的!

于 2015-08-05T19:53:23.923 回答