2015-08-03 5 views
1

Я новичок на MuleSoft. Я создал проект Maven Mule, и один из моих потоков имеет компонент Http Request. Этот компонент имеет атрибут «host». Тем не менее, у меня есть 2 среды: Test and Production. Возможно ли динамическое изменение значения атрибута «хозяин» в зависимости от профиля, созданного на maven?Возможно ли динамическое изменение значения хоста http-запроса с использованием профиля maven в mule?

ответ

1

@ Сударшан очень помог мне! Однако решение 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 

После этого вам будет хорошо!

+0

Это странно, потому что у меня есть эта конфигурация, работающая с несколькими живыми приложениями. Проблема с вашим ответом заключается в том, что все специфические настройки env окажутся в pom. Если вы загрузите свой проект (подмножество) где-нибудь, я бы не прочь взглянуть на него. Но отлично, что вы его взломали. – Sudarshan

2

Хороший вопрос! То, что вы на самом деле ищете, - это конфигурации, специфичные для окружающей среды.

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 будет выглядеть, как показано ниже

pom.xml and project structure

Я помню, что некоторые проблемы вокруг раздела ресурсов, поэтому наклеивать соответствующий раздел здесь

<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 должен выглядеть ниже

mule-project.xml

С этим отсортировано просто выбрать профиль в мавенно построить

МВНОЙ чистого пакета компиляции - P qa

+0

Удивительный! Ссылка была действительно полезна! Тем не менее, контроль свойств производится в ** переменных среды **, где я могу определить, является ли это «QA» или «Production» в корневом файле mule-project.xml. Тем не менее, мой вопрос по-прежнему остается: возможно ли изменить этот элемент управления на профиль maven? – Gabriel

+0

Я обновил свой ответ. Дайте мне знать, если это сработает для вас. – Sudarshan

+0

Я сделал именно то, что вы сделали в ответ на обновление. Однако при запуске профиля появляется следующая ошибка: ** 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

 Смежные вопросы

  • Нет связанных вопросов^_^