Как использовать файл свойств с Hudson во время компиляции? - PullRequest
0 голосов
/ 26 декабря 2010

У меня есть pom.xml, который использует cxf-codegen-plugin для генерации пары клиентов WS.

Внутри конфигурации cxf-codegen-plugin есть местоположения WSDL.

Я хотел бы перенести эти строки в файл env.properties.

Я использовал плагин properties-maven-plugin org.codehaus.mojo, чтобы заглянуть внутрь src / main / resources / conf / app / env.properties.

Как я могу заставить Хадсона заменить эти свойства хостом apropiate?

Заранее спасибо

Ответы [ 2 ]

2 голосов
/ 28 декабря 2010

Фильтрация и профили должны работать.

Установите файл фильтра husdon и поместите его в src / main / filters.Создайте дополнительный файл фильтра для каждого региона, в котором вам нужно работать.

Файлы фильтров должны иметь одинаковые имена, например так: filter-hudson.properties, filter-prod.properties и т. Д., И содержать те же свойства:

wsdl.host=myHost
etc...

Затем создайте простые профили, содержащие среду, в которой вы работаете:

<profiles>
  <profile>
    <id>prod</id>
    <properties>
      <env>prod</env>
    </properties>
  </profile>
  <profile>
    <id>hudson</id>
    <properties>
      <env>hudson</env>
    </properties>
  </profile>
</profiles>

Если затем вы настроите свои фильтры в pom:

<filters>
  <filter>src/main/filters/filter-${env}.properties</filter>
</filters>
<resources>
  <resource>
    <directory>src/main/resources/conf/app</directory>
    <filtering>true</filtering>
  </resource>
</resources>

Затем файлы в приложении conf будут заменены на wsdl.host конкретными значениями в вашем фильтре.

Затем при запуске сборки hudson добавьте -P hudson, чтобы вызвать профиль hudson.

Возможно, есть «лучший» способ сделать это, но около полутора лет назад у меня был успех с этой техникой.Чтобы дать должное признание, вот сообщение в блоге , которое я использовал в качестве инструкции.

0 голосов
/ 27 декабря 2010

Если я вас правильно понимаю, вы просто хотите указать путь к правильному файлу WSDL . Смотрите следующий пример из cxf-codgen plugin .

<plugin>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-codegen-plugin</artifactId>
    <version>${cxf.version}</version>
    <executions>
        <execution>
            <id>generate-sources</id>
            <phase>generate-sources</phase>
            <configuration>
                <sourceRoot>${project.build.directory}/generated/cxf</sourceRoot>
                <wsdlOptions>
                    <wsdlOption>
                        <wsdl>${basedir}/src/main/wsdl/myService.wsdl</wsdl>
                    </wsdlOption>
                </wsdlOptions>
            </configuration>
            <goals>
                <goal>wsdl2java</goal>
            </goals>
        </execution>
    </executions>
</plugin>

Здесь путь к WSDL изменяется только с помощью basedir. Вы можете изменить эту строку на:

...
<wsdl>${basedir}/${myRelativePath}/myService.wsdl</wsdl>
...

Путь, который вы можете прочитать, как упомянуто вами, используя properties-maven-plugin . Проблема заключается в том, чтобы загрузить правильный файл свойств. Это можно сделать с помощью профиля.

<profiles>
    <profile>
        <id>fitnesse</id>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>maven-properties-plugin</artifactId>
                    <version>1.0-SNAPSHOT</version>
                    <executions>
                        <execution>
                            <phase>initialize</phase>
                            <goals>
                                <goal>read-project-properties</goal>
                            </goals>
                            <configuration>
                                <files>
                                    <file>etc/config/dev.properties</file>
                                </files>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    </profile>
<profiles>

Если все свойства влияют только на файл wsdl, вы можете настроить путь к нужному файлу wsdl в профиле, что устраняет необходимость в файле свойств.


На всякий случай, что я вас полностью неправильно понял, а вы только хотели узнать, как получить свойства, считанные из файла свойств в файл wsdl (xml), , затем посмотрите на maven-config-processor-plugin , синтаксис для изменения XML-файлов находится на странице конфигурации преобразования

...