Я новичок на MuleSoft. Я создал проект Maven Mule, и один из моих потоков имеет компонент Http Request. Этот компонент имеет атрибут «host». Тем не менее, у меня есть 2 среды: Test and Production. Возможно ли динамическое изменение значения атрибута «хозяин» в зависимости от профиля, созданного на maven?Возможно ли динамическое изменение значения хоста http-запроса с использованием профиля maven в mule?
ответ
@ Сударшан очень помог мне! Однако решение 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>
Чтобы создать профиль на мавена, что я сделал:
<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>
Затем в XML поток, расположенный на src/main/app мой HTTP-запрос:
<http:request-config name="HTTP_Request_Configuration" host="${host}" port="${port}" basePath="${basePath}" doc:name="HTTP Request Configuration"
connectionIdleTimeout="180000" />
Чтобы запустить profi le created, используйте следующую команду на maven:
mvn clean package -Paq -X
После этого вам будет хорошо!
Хороший вопрос! То, что вы на самом деле ищете, - это конфигурации, специфичные для окружающей среды.
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
Во время сборки вы задаете бы, что вы строите для конкретной среды и те конкретные значения будут заменяются в вашей конфигурации
Update: Выбор файла свойств на основе профиля 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>
Ваш мул-project.xml должен выглядеть ниже
С этим отсортировано просто выбрать профиль в мавенно построить
МВНОЙ чистого пакета компиляции - P qa
Удивительный! Ссылка была действительно полезна! Тем не менее, контроль свойств производится в ** переменных среды **, где я могу определить, является ли это «QA» или «Production» в корневом файле mule-project.xml. Тем не менее, мой вопрос по-прежнему остается: возможно ли изменить этот элемент управления на профиль maven? – Gabriel
Я обновил свой ответ. Дайте мне знать, если это сработает для вас. – Sudarshan
Я сделал именно то, что вы сделали в ответ на обновление. Однако при запуске профиля появляется следующая ошибка: ** java.io.FileNotFoundException: Source 'C: \ Users \ Gabriel \ AnypointStudio \ bus \ bus \ target \ bus1.0.0-SNAPSHOT.zip' не существует в org. apache.commons.io.FileUtils.copyFile (FileUtils.java:767) **. Кажется, что zip не создается при выполнении с профилем. Есть идеи? – Gabriel
Это странно, потому что у меня есть эта конфигурация, работающая с несколькими живыми приложениями. Проблема с вашим ответом заключается в том, что все специфические настройки env окажутся в pom. Если вы загрузите свой проект (подмножество) где-нибудь, я бы не прочь взглянуть на него. Но отлично, что вы его взломали. – Sudarshan