2013-05-09 5 views
2

У меня проблема и не могу определить причину до сих пор.Выполнение профиля Maven

У меня есть проект maven, который имеет несколько модулей. Одним из этих модулей является клиент webservices.

Итак, во время разработки при запуске установки в maven ему необходимо получить доступ к локальному серверу для создания клиента. Когда я запускаю плагин для генерации выпуска проекта, клиенты должны указывать на производственный сервер.

Для этого я задал в качестве ключевого свойства $ {server.address}, который используется для указания сервера при генерации клиентов. Существует один профиль, который, когда активен, это свойство ключа переписывает адрес на производственный сервер.

Что происходит? Запуск mvn install генерируется правильно, т. Е. Указывает на локальный сервер. Когда я сгенерирую выпуск, используя команду mvn release: prepare -B release: выполнить -Denv = prd не переписывает переменную так, как должна.

Странно, что если я запустил mvn install -Denv = prd, он генерирует правильно, указывая на производственный сервер.

Может ли кто-нибудь дать мне намек на то, что нужно изменить, чтобы работать и в цикле выпуска?

<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>groupId</groupId> 
    <artifactId>artifactId</artifactId> 
    <version>0.0.2-SNAPSHOT</version> 
    <packaging>jar</packaging> 

    <properties> 
     <server.address>http://localhost:8080</server.address> 
    </properties> 

    <profiles> 
     <profile> 
      <id>prd</id> 
      <activation> 
       <property> 
        <name>env</name> 
        <value>prd</value> 
       </property> 
      </activation> 
      <properties> 
       <server.address>http://srvprd009:8080</server.address> 
      </properties> 
      </profile> 
    </profiles> 

    <build> 
     <sourceDirectory>src/main/java</sourceDirectory> 
     <resources> 
      <resource> 
       <directory>src/main/resources</directory> 
      </resource> 
     </resources> 
     <testSourceDirectory>src/test/java</testSourceDirectory> 
     <testResources> 
      <testResource> 
       <directory>src/test/resources</directory> 
      </testResource> 
     </testResources> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-eclipse-plugin</artifactId> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-release-plugin</artifactId> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.cxf</groupId> 
       <artifactId>cxf-codegen-plugin</artifactId> 
       <executions> 
        <execution> 
         <id>generate-client</id> 
         <phase>generate-sources</phase> 
         <configuration> 
          <sourceRoot>src/main/gen</sourceRoot> 
          <wsdlOptions> 
           <wsdlOption> 
            <wsdl>${server.address}/services/utilities?wsdl</wsdl> 
            <extraargs> 
             <extraarg>-p</extraarg> 
             <extraarg>${project.package}</extraarg> 
             <extraarg>-impl</extraarg> 
             <extraarg>-verbose</extraarg> 
             <extraarg>-frontend</extraarg> 
             <extraarg>jaxws21</extraarg> 
             <extraarg>-xjc-XhashCode</extraarg> 
             <extraarg>-xjc-Xequals</extraarg> 
            </extraargs> 
           </wsdlOption> 
          </wsdlOptions> 
         </configuration> 
         <goals> 
          <goal>wsdl2java</goal> 
         </goals> 
        </execution> 
       </executions> 
       <dependencies> 
        <dependency> 
         <groupId>org.apache.cxf</groupId> 
         <artifactId>cxf-rt-frontend-jaxws</artifactId> 
         <version>${cxf.version}</version> 
        </dependency> 
        <dependency> 
         <groupId>org.apache.cxf</groupId> 
         <artifactId>cxf-rt-transports-http</artifactId> 
         <version>${cxf.version}</version> 
        </dependency> 
        <dependency> 
         <groupId>org.jvnet.jaxb2_commons</groupId> 
         <artifactId>jaxb2-basics</artifactId> 
         <version>0.6.4</version> 
        </dependency> 
       </dependencies> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-clean-plugin</artifactId> 
       <version>${maven-clean-plugin.version}</version> 
       <configuration> 
        <filesets> 
         <fileset> 
          <directory>src/main/gen</directory> 
          <includes> 
           <include>**/*.*</include> 
          </includes> 
         </fileset> 
        </filesets> 
       </configuration> 
      </plugin> 
      <plugin> 
       <groupId>org.codehaus.mojo</groupId> 
       <artifactId>build-helper-maven-plugin</artifactId> 
       <version>${build-helper-maven-plugin.version}</version> 
       <executions> 
        <execution> 
         <phase>generate-sources</phase> 
         <goals> 
          <goal>add-source</goal> 
         </goals> 
         <configuration> 
          <sources> 
           <source>src/main/gen</source> 
          </sources> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 
     </plugins> 
    </build> 

    <dependencies> 
     <dependency> 
      <groupId>${project.groupId}</groupId> 
      <artifactId>ts-core</artifactId> 
      <version>${project.version}</version> 
     </dependency> 

     <dependency> 
      <groupId>corporate-tools.fragmental.security</groupId> 
      <artifactId>basic-ws-client</artifactId> 
      <version>${fragmental.version}</version> 
     </dependency> 

     <!-- JEE --> 
     <dependency> 
      <groupId>javax.j2ee</groupId> 
      <artifactId>j2ee</artifactId> 
      <version>1.4</version> 
      <scope>provided</scope> 
     </dependency> 

     <!-- JAX-WS --> 
     <dependency> 
      <groupId>commons-logging</groupId> 
      <artifactId>commons-logging</artifactId> 
      <version>1.1.1</version> 
     </dependency> 
     <dependency> 
      <groupId>javax.xml.bind</groupId> 
      <artifactId>jaxb-api</artifactId> 
      <version>${jaxws.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>javax.xml.ws</groupId> 
      <artifactId>jaxws-api</artifactId> 
      <version>${jaxws.version}</version> 
      <exclusions> 
       <exclusion> 
        <groupId>javax.xml.soap</groupId> 
        <artifactId>saaj-api</artifactId> 
       </exclusion> 
       <exclusion> 
        <artifactId>jsr250-api</artifactId> 
        <groupId>javax.annotation</groupId> 
       </exclusion> 
      </exclusions> 
     </dependency> 
    </dependencies> 
</project> 

ответ

0

Я установил мою проблему создания двух профилей, при условии, что первый имеет де dafault активации = истина и установить мой server.address на локальный.

Второго профиль, который устанавливается server.address на PRD сервера называется командной строкой непосредственно -Р PRD

Так что, когда я выполняю без аргументов, профиль по умолчанию устанавливает server.address на локальный хост: 8080 и когда я выполняю выпуск, я использую -P prd, и релиз работает нормально.

Благодарим вас за ответы.

+1

Вы используете -Pprd для каждого выпуска? Если да, вы можете добавить его в конфигурацию плагина выпуска и не нужно устанавливать его вручную в командной строке. См. Http://maven.apache.org/maven-release/maven-release-plugin/perform-mojo.html#releaseProfiles – mszalbach

1

Плагин релиз имеет своего рода странный (для меня)) использование со специальными свойствами, и направление их реальной цели выполненной. Если вы используете обычный аргумент профиля -Pprod, это сработает. Однако большинство других аргументов, которые вы добавляете при вызове mvn, игнорируются. Таким образом, вы можете попробовать следующее одно:

mvn release:prepare -B release:perform -Darguments="-Denv=prd" 
0

Я полагаю, вы используете Maven 2.0.x правильно?

Если я правильно помню, переопределение свойств в профиле не работает нормально или раньше Maven 2.0.7. Обновление до версии 2.0.x (2.0.11) или даже 2.2.x/3.0.x будет работать так, как вы ожидали.

Однако, немного не по теме, я считаю, что вы обращаетесь к серверу, чтобы получить право на WSDL? Я не думаю, что это хорошая идея, особенно для сборки релизов, потому что она делает сборку невоспроизводимой. Подумайте о том, чтобы установить WSDL с исходным кодом (по крайней мере, для сборки релиза), чтобы сделать сборку воспроизводимой.

+0

Я использую maven 3.0.3 –

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