maven: порядок нескольких профилей в пом - PullRequest
2 голосов
/ 14 февраля 2012

У меня есть пом с 3 определенными профилями. Я хочу:

  1. запускать "генерировать" профиль всегда раньше всех остальных (при необходимости)
  2. запуск профиля dev / normal на основе, например, свойств Pom Snip:

    <profiles>
        <profile>
            <id>generate-axis-stubs</id>
            <activation>
                <file>
                    <missing>target/generated-sources</missing>
                </file>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.axis2</groupId>
                        <artifactId>axis2-wsdl2code-maven-plugin</artifactId>
                        <configuration>
                            <generateServerSide>true</generateServerSide>
                            <generateServicesXml>true</generateServicesXml>
                            <outputDirectory>target/generated-sources</outputDirectory>
                            <packageName>${genclasses.package}</packageName>
                        </configuration>
                        <executions>
                            <execution>
                                <id>ESISGeneralSigningStatusUpdate_V1_0</id>
                                <goals>
                                    <goal>wsdl2code</goal>
                                </goals>
                                <phase>generate-sources</phase>
                                <configuration>
                                    <wsdlFile>${wsdl.src.dir}/ESISGeneralSigningStatusUpdate_V1_0.wsdl</wsdlFile>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
    
        <profile>
            <id>normal</id>
            <activation>
                <property>
                    <name>!env</name>
                </property>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-surefire-plugin</artifactId>
                        <configuration>
                            <excludes>
                                <exclude>**/JdbcDataServiceImplTest.java</exclude>
                            </excludes>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
    
    <!-- This profile should be used to run tests that requires access to DB It is activated in case system variable env=dev -->
    <profile>
        <id>run-db-tests</id>
        <activation>
            <property>
                <name>env</name>
                <value>dev</value>
            </property>
        </activation>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <configuration>
                        <includes>
                            <include>**/*Test.java</include>
                        </includes>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </profile>
    

Проблема в том, что при чистой компиляции это работает ровно каждый второй раз. Я включил отладку -X и сравнил вывод. - неудачный, + тот, который сработал.

@@ -1551,6 +1551,10 @@
 [DEBUG] Lifecycle default -> [validate, initialize, generate-sources, process-sources, generate-resources, process-resources, compile, process-classes, 
generate-test-sources, process-test-sources, generate-test-resources, process-test-resources, test-compile, process-test-classes, test, prepare-package, 
package, pre-integration-test, integration-test, post-integration-test, verify, install, deploy]
 [DEBUG] Lifecycle clean -> [pre-clean, clean, post-clean]
 [DEBUG] Lifecycle site -> [pre-site, site, post-site, site-deploy]
+[DEBUG] Using mirror nexus (http://nexus.edb.com/nexus/content/groups/public/) for apache.snapshots (http://repository.apache.org/snapshots).
+[DEBUG] Lifecycle default -> [validate, initialize, generate-sources, process-sources, generate-resources, process-resources, compile, process-classes, generate-test-sources, process-test-sources, generate-test-resources, process-test-resources, test-compile, process-test-classes, test, prepare-package, package, pre-integration-test, integration-test, post-integration-test, verify, install, deploy]
+[DEBUG] Lifecycle clean -> [pre-clean, clean, post-clean]
+[DEBUG] Lifecycle site -> [pre-site, site, post-site, site-deploy]
 [DEBUG] Lifecycle default -> [validate, initialize, generate-sources, process-sources, generate-resources, process-resources, compile, process-classes, generate-test-sources, process-test-sources, generate-test-resources, process-test-resources, test-compile, process-test-classes, test, prepare-package, package, pre-integration-test, integration-test, post-integration-test, verify, install, deploy]
 [DEBUG] Lifecycle clean -> [pre-clean, clean, post-clean]
 [DEBUG] Lifecycle site -> [pre-site, site, post-site, site-deploy]
@@ -1563,7 +1567,7 @@
 [DEBUG] === PROJECT BUILD PLAN ================================================
 [DEBUG] Project:       com.edb.esign:gssWsServer:2.3-SNAPSHOT
 [DEBUG] Dependencies (collect): []
-[DEBUG] Dependencies (resolve): [compile]
+[DEBUG] Dependencies (resolve): [compile, test]
 [DEBUG] Repositories (dependencies): [nexus (http://nexus.edb.com/nexus/content/groups/public/, releases+snapshots)]
 [DEBUG] Repositories (plugins)     : [nexus (http://nexus.edb.com/nexus/content/groups/public/, releases+snapshots)]
 [DEBUG] -----------------------------------------------------------------------

Когда я запускаю help: active-profile

  1. после успеха показывает: Активны следующие профили:

    • нормальный (источник: пом)
    • nexus (источник: settings.xml)
  2. после сбоя показывает: Активны следующие профили:

    • генерировать заглушки для осей генерации (источник: pom)
    • нормально (источник: пом)
    • nexus (источник: settings.xml)

Если я почистил его вручную, а затем скомпилировал - он работает постоянно. Но почему это не всегда работает для чистой компиляции? Спасибо!

1 Ответ

2 голосов
/ 14 февраля 2012

Поскольку профили оцениваются ровно один раз.Таким образом, проблема не в clean compile, а в том, существует ли папка target/generated-sources при запуске Maven.

Если она существует, clean compile должен произойти сбой, поскольку программа очистки удаляет папку, а Maven - нетзаботиться больше.

...