java - maven:pom中多个配置文件的顺序

标签 java maven apache-axis

我有一个定义了 3 个配置文件的 pom。 我想要:

  1. 始终在所有其他配置文件之前运行“生成”配置文件(如果需要)
  2. 基于例如属性运行 dev/normal 配置文件 pom 片段:

    <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. 成功后显示: 以下配置文件处于 Activity 状态:

    • 正常(来源:pom)
    • nexus(来源:settings.xml)
  2. 失败后显示: 以下配置文件处于 Activity 状态:

    • 生成轴 stub (来源:pom)
    • 正常(来源:pom)
    • nexus(来源:settings.xml)

如果我手动清理它然后编译 - 它始终有效。但为什么它并不总是适用于干净编译呢? 谢谢!

最佳答案

因为配置文件只被评估一次。所以问题不在于干净编译,而在于启动Maven时文件夹target/generated-sources是否存在。

如果存在,clean 编译 必须失败,因为 clean 会删除该文件夹,但 Maven 不再关心。

关于java - maven:pom中多个配置文件的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9272859/

相关文章:

java - 在运行时将字符串解析为 Java 代码

java - JPA继承两个或多个父类(super class)

java - 排除 MANIFEST.MF 中的条目

JavaFX - 无法解析符号 'font' (FXML)

java - 并发网络服务中的问题

java - 从 Web 服务响应中删除自定义标签

java - 创建一副具有两种变化的纸牌 : 52 and infinite

java - 创建一个圆形的 JFrame/ContentPane

java - 配置 Jacoco 进行集成测试代码覆盖率

java - 为什么我不能部署包含一些外部 jar 文件的 java webservice ..?