【问题标题】:How use maven profiles in mule domain project?如何在 mule 域项目中使用 maven 配置文件?
【发布时间】:2016-03-15 10:02:52
【问题描述】:

我的目标是:在 mule 3.6.1 域项目中使用 maven 配置文件。

我有一个适用于任何 java maven 项目的 maven 配置文件配置。我将此配置用于我的 mule 项目:

<project ...>

    <modelVersion>
    <groupId>
    <artifactId>
    <version>
    <packaging>

    <build>
        <finalName>${project.artifactId}</finalName>
        <resources>
            <resource>
                <directory>src/main/resources/${resource.dir}</directory>
                <filtering>true</filtering>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <excludes>
                    <exclude>env1/</exclude>
                    <exclude>env2/</exclude>
                    ...
                </excludes>
                <filtering>false</filtering>
            </resource>
        </resources>
    </build>

    <profiles>
        <profile>
            <id>env1</id>
            <activation>
                <property>
                    <name>target.env1</name>
                    <value>env1</value>
                </property>
            </activation>
            <properties>
                <resource.dir>env1</resource.dir>
            </properties>
        </profile>
        <profile>
            <id>env2</id>
            <activation>
                <property>
                    <name>target.env2</name>
                    <value>env2</value>
                </property>
            </activation>
            <properties>
                <resource.dir>env2</resource.dir>
            </properties>
        </profile>
        <profile> ...
    </profiles>

</project>

目录结构:

my_maven_mule_project\
my_maven_mule_project\pom.xml
my_maven_mule_project\src\
my_maven_mule_project\src\app
my_maven_mule_project\src\app\my_mule_config.xml
my_maven_mule_project\src\app\mule-app.properties
my_maven_mule_project\src\app\mule-deploy.properties
my_maven_mule_project\src\java
my_maven_mule_project\src\resources
my_maven_mule_project\src\resources\env1
my_maven_mule_project\src\resources\env1\prop.properties
my_maven_mule_project\src\resources\env2
my_maven_mule_project\src\resources\env2\prop.properties

after maven profile execution : mvn clean package -Penv1 , zip artifact has:

my_mule_config.xml
mule-app.properties
mule-deploy.properties
lib
classes
classes\prop.properties

classes\prop.properties 只有 env1 参数,这对我有好处!

但是当我尝试使用骡域项目时不起作用。 maven 执行的结果是所有文件夹的所有属性环境:

my_mule_domain_project\env1
my_mule_domain_project\env1\prop.properties
my_mule_domain_project\env2
my_mule_domain_project\env2\prop.properties
my_mule_domain_project\mule-deploy.properties
my_mule_domain_project\mule-domain-config.xml
my_mule_domain_project\prop.properties
my_mule_domain_project\lib

这对我不利。

骡域项目:

https://github.com/jrichardsz/mule-esb-usefull-templates/tree/master/my_mule_domain_project

那么,有没有人有任何 maven 配置可以在 mule domain 项目中使用配置文件?

我在 mule 官方文档中找不到任何内容。

提前致谢!

【问题讨论】:

    标签: maven mule maven-profiles


    【解决方案1】:

    这是mule-domain-maven-plugin中的一个bug(一个非常丑陋的),它打包了src目录而不是target,导致了这种问题。您的资源配置可以更改目标目录中的内容(这就是 Maven 应该如何工作),并且由于域插件包 src 目录,因此不应用源过滤。 您可以在此处提交 JIRA 票证:https://www.mulesoft.org/jira/browse/MULE 除了使用 maven-assembly-plugin 打包您的域之外,我找不到修复它的好方法......对此感到抱歉。

    【讨论】:

    • 不用担心。谢谢你的解释。有没有办法修复这个插件? git 回购?我有时间玩这个插件,也许会提出拉取请求。
    【解决方案2】:

    还好没必要修改插件:S

    感谢 Ale 的解释和一些测试,添加此行有效:)

    <resourcesDirectory>${project.basedir}/target/classes</resourcesDirectory>
    

    最后的 pom 是:

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <groupId>com.mycompany</groupId>
        <artifactId>my_mule_domain_project</artifactId>
        <packaging>mule-domain</packaging>
        <version>1.0.0-SNAPSHOT</version>
        <name>Domain my_mule_domain_project Project</name>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.mule.tools.maven</groupId>
                    <artifactId>mule-domain-maven-plugin</artifactId>
                    <version>1.0</version>
                    <extensions>true</extensions>
                    <configuration>
                    <copyToDomainsDirectory>false</copyToDomainsDirectory>
                    <resourcesDirectory>${project.basedir}/target/classes</resourcesDirectory>
                    </configuration>
                </plugin>
            </plugins>
            <resources>
                <resource>
                    <directory>src/main/resources/${resource.dir}</directory>
                    <filtering>true</filtering>
                </resource>
                <resource>
                    <directory>src/main/resources</directory>
                    <excludes>
                        <exclude>env1/</exclude>
                        <exclude>env2/</exclude>
                    </excludes>
                    <filtering>false</filtering>
                </resource>
            </resources>
        </build>
    
        <profiles>
            <profile>
                <id>env1</id>
                <activation>
                    <property>
                        <name>target.env1</name>
                        <value>env1</value>
                    </property>
                </activation>
                <properties>
                    <resource.dir>env1</resource.dir>
                </properties>
            </profile>
            <profile>
                <id>env2</id>
                <activation>
                    <property>
                        <name>target.env2</name>
                        <value>env2</value>
                    </property>
                </activation>
                <properties>
                    <resource.dir>env2</resource.dir>
                </properties>
            </profile>
        </profiles>
    
        <pluginRepositories>
            <pluginRepository>
                <id>mulesoft-release</id>
                <name>mulesoft release repository</name>
                <layout>default</layout>
                <url>http://repository.mulesoft.org/releases/</url>
                <snapshots>
                    <enabled>false</enabled>
                </snapshots>
            </pluginRepository>
        </pluginRepositories>
    </project>
    

    可以用作模板的项目在这里:

    https://github.com/jrichardsz/mule-esb-usefull-templates/tree/master/my_mule_domain_project-fix-maven-profile

    问候

    【讨论】:

      猜你喜欢
      • 2020-10-28
      • 2012-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多