无法将 spring 云合同 Maven 插件附加到生命周期阶段

Cannot attach spring cloud contract maven plugin to lifecycle phase

如果不在 maven 命令行中明确指定目标,我无法从 运行 spring-cloud-contract:generateTests 到 运行。这是pom.xml的插件配置:

<!-- Contract Driven Testing -->
            <plugin>
              <groupId>org.springframework.cloud</groupId>
              <artifactId>spring-cloud-contract-maven-plugin</artifactId>
              <version>${spring-cloud-contract.version}</version>
              <!-- Don't forget about this value !! -->
              <extensions>true</extensions>
              <configuration>
                <!-- Provide the base class for your auto-generated tests -->
                <packageWithBaseClasses>cdc</packageWithBaseClasses>
              </configuration>
                <executions>
                    <execution>
                        <id>spring-cloud-generateTests</id>
                        <goals>
                            <goal>generateTests</goal>
                        </goals>
                    </execution>
                </executions>

              <dependencies>
                <dependency>
                  <groupId>org.springframework.cloud</groupId>
                  <artifactId>spring-cloud-contract-verifier</artifactId>
                  <version>${spring-cloud-contract.version}</version>
                </dependency>
              </dependencies>
            </plugin>

当我 运行 mvn clean install 时,测试没有生成,尽管明确指定目标实现了目标。

这里是完整的 pom.xml:

<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.4.1.RELEASE</version>
</parent>

<groupId>tr.gov.tubitak.bilgem.yte.maliye</groupId>
<artifactId>maliye-muhasebeislemleri</artifactId>
<packaging>jar</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>maliye-muhasebeislemleri Maven Webapp</name>
<url>http://maven.apache.org</url>
<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <!-- Database Dependencies -->
    <h2.version>1.4.190</h2.version>
    <!-- Testing Dependencies -->
    <postgresql.version>9.4.1207</postgresql.version>
    <start-class>tr.gov.tubitak.bilgem.yte.maliye.Application</start-class>
    <spring-cloud-contract.version>1.0.4.BUILD-SNAPSHOT</spring-cloud-contract.version>
</properties>

<distributionManagement>
    <repository>
        <id>nexus</id>
        <name>Internal Releases</name>
        <url>http://yte-nexus:8081/nexus/content/repositories/releases/</url>
    </repository>
    <snapshotRepository>
        <id>nexus</id>
        <name>Internal Releases</name>
        <url>http://yte-nexus:8081/nexus/content/repositories/snapshots/</url>
    </snapshotRepository>
</distributionManagement>
<dependencyManagement>
  <dependencies>
    <!-- If you're adding this dependency explicitly you have to add it *BEFORE*
        the Release Train BOM -->
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-contract-dependencies</artifactId>
      <version>${spring-cloud-contract.version}</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>
<dependencies>
    <!-- Testing Dependencies -->
    <dependency>
        <groupId>org.powermock</groupId>
        <artifactId>powermock-api-mockito</artifactId>
        <version>1.6.4</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.jmockit</groupId>
        <artifactId>jmockit</artifactId>
        <version>1.8</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>${junit.version}</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-all</artifactId>
        <version>${mockito.version}</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>tr.gov.tubitak.bilgem.yte.maliye</groupId>
        <artifactId>mb-testutils</artifactId>
        <version>0.1.6-RELEASE</version>
        <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-contract-verifier</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-contract-wiremock</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-contract-stub-runner</artifactId>
      <scope>test</scope>
    </dependency>
    <!-- Required by contract tests -->
    <dependency>
      <groupId>org.apache.maven</groupId>
      <artifactId>maven-model</artifactId>
      <version>3.3.9</version>
      <scope>test</scope>
    </dependency>
    <!-- MGM-CORE Dependencies -->
    <dependency>
        <groupId>tr.gov.tubitak.bilgem.yte.maliye</groupId>
        <artifactId>mb-core</artifactId>
        <version>0.10.2-RELEASE</version>
    </dependency>
    <!-- Database Dependencies -->
    <dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
        <version>${h2.version}</version>
        <scope>test</scope>
    </dependency>
    <!-- POSTGRES -->
    <dependency>
        <groupId>org.postgresql</groupId>
        <artifactId>postgresql</artifactId>
        <version>${postgresql.version}</version>
    </dependency>
    <dependency>
        <groupId>org.jacoco</groupId>
        <artifactId>jacoco-maven-plugin</artifactId>
        <version>0.7.6.201602180812</version>
        <scope>test</scope>
    </dependency>
</dependencies>
<build>
    <finalName>maliye-muhasebeislemleri</finalName>
    <resources>
        <resource>
            <directory>${basedir}/src/main/java</directory>
        </resource>
        <resource>
            <directory>${basedir}/src/main/resources</directory>
            <filtering>true</filtering>
        </resource>
    </resources>
    <testResources>
        <testResource>
            <directory>${project.basedir}/src/test/java</directory>
            <excludes>
                <exclude>**/*.java</exclude>
            </excludes>
        </testResource>
        <testResource>
            <directory>${project.basedir}/src/test/resources</directory>
        </testResource>
        <testResource>
            <directory>${project.basedir}/target/generated-test-sources</directory>
            <excludes>
                <exclude>**/*.java</exclude>
            </excludes>
        </testResource>
    </testResources>
    <pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <dependencies>
                    <dependency>
                        <groupId>org.springframework</groupId>
                        <artifactId>springloaded</artifactId>
                        <version>${spring-loaded.version}</version>
                    </dependency>
                </dependencies>
                <configuration>
                    <mainClass>${start-class}</mainClass>
                </configuration>
            </plugin>
            <plugin>
                <groupId>tr.gov.tubitak.bilgem.yte.maliye</groupId>
                <artifactId>mb-automatic-file-creator</artifactId>
                <version>0.0.1-RELEASE</version>
                <dependencies>
                    <dependency>
                        <groupId>tr.gov.tubitak.bilgem.yte.maliye</groupId>
                        <artifactId>mb-automatic-file-creator</artifactId>
                        <version>0.0.1-RELEASE</version>
                    </dependency>
                </dependencies>
                <configuration>
                    <fName>${packageName}</fName>
                    <directory>${directory}</directory>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.3</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <showWarnings>true</showWarnings>
                </configuration>
            </plugin>
            <plugin>
                <groupId>tr.gov.tubitak.bilgem.yte.maliye</groupId>
                <artifactId>mb-veriaktarim-maven-plugin</artifactId>
                <version>0.2.8-SNAPSHOT</version>
                <configuration>
                    <driver>${db.driver}</driver>
                    <datasetDir>db-changelog/veri/</datasetDir>
                    <jdbcUrl>${db.url}</jdbcUrl>
                    <dbUser>${db.username}</dbUser>
                    <dbPass>${db.password}</dbPass>
                    <schema>${db.schema}</schema>
                    <ignoredTables>
                        <table>databasechangelog</table>
                        <table>databasechangeloglock</table>
                        <table>cerceve_hesap_kodu</table>
                        <table>hesap_grubu</table>
                    </ignoredTables>
                    <noTruncateTables>
                        <table>kamu_idaresi</table>
                        <table>harcama_birimi</table>
                        <table>muhasebe_birimi</table>
                        <table>muhasebe_fisi</table>
                        <table>ortak_hesap_plani</table>
                        <table>ortak_hesap_kodu</table>
                        <table>kurum_hesap_plani</table>
                        <table>kurum_hesap_kodu</table>
                        <table>son_fis_bilgisi</table>
                        <table>harcama_birimi_devir_bilgisi</table>
                        <table>kurum_hesap_plani_devir_bakiye_bilgisi</table>
                        <table>kurum_hesap_kodu_devir_bakiye_bilgisi</table>
                        <table>ortak_hesap_kodu_grubu_kod</table>
                        <table>ortak_hesap_kodu_grubu</table>
                        <table>ortak_hesap_kodu_iliskisi</table>
                    </noTruncateTables>
                </configuration>
                <dependencies>
                    <dependency>
                        <groupId>org.postgresql</groupId>
                        <artifactId>postgresql</artifactId>
                        <version>${postgresql.version}</version>
                    </dependency>
                </dependencies>
                <executions>
                    <execution>
                        <id>cleanAndTransferData</id>
                        <phase>prepare-package</phase>
                        <goals>
                            <goal>cleanAndTransferData</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>exportData</id>
                        <phase>prepare-package</phase>
                        <goals>
                            <goal>exportData</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.15</version>
                <configuration>
                    <properties>
                        <argLine>-Dfile.encoding=UTF-8</argLine>
                    </properties>
                    <includes>
                        <include>**/*Tests.java</include>
                        <include>**/*Test.java</include>
                        <include>**/Test*.java</include>
                    </includes>
                    <excludes>
                        <exclude>**/Abstract*.java</exclude>
                    </excludes>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.liquibase</groupId>
                <artifactId>liquibase-maven-plugin</artifactId>
                <version>3.3.2</version>
                <configuration>
                    <promptOnNonLocalDatabase>false</promptOnNonLocalDatabase>
                    <changeLogFile>db-changelog/db.changelog-master.xml</changeLogFile>
                    <driver>${db.driver}</driver>
                    <url>${db.url}</url>
                    <username>${db.username}</username>
                    <password>${db.password}</password>
                    <defaultSchemaName>${db.schema}</defaultSchemaName>
                    <contexts>${db.context}</contexts>
                    <migrationSqlOutputFile>db-setting/muhasebe.sql</migrationSqlOutputFile>
                </configuration>
                <executions>
                    <execution>
                        <phase>process-resources</phase>
                        <goals>
                            <goal>update</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <!-- JACOCO  -->
            <plugin>
                <groupId>org.jacoco</groupId>
                <artifactId>jacoco-maven-plugin</artifactId>
                <version>0.7.6.201602180812</version>
                <configuration>
                    <sourceEncoding>UTF-8</sourceEncoding>
                    <outputEncoding>UTF-8</outputEncoding>
                </configuration>
                <executions>
                    <execution>
                        <id>jacoco-prepare-agent</id>
                        <goals>
                            <goal>prepare-agent</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>jacoco-prepare-package</id>
                        <phase>prepare-package</phase>
                        <goals>
                            <goal>report</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <!-- JACOCO -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-failsafe-plugin</artifactId>
                <version>2.14</version>
                <executions>
                    <execution>
                        <id>integration-test</id>
                        <goals>
                            <goal>integration-test</goal>
                            <goal>verify</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>verify</id>
                        <goals>
                            <goal>verify</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>tr.gov.tubitak.bilgem.yte.maliye</groupId>
                <artifactId>maliye-kullaniciaktarim-maven-plugin</artifactId>
                <version>0.2.2-RELEASE</version>
                <configuration>
                    <securityUrl>${kullaniciAktarim.url}</securityUrl>
                    <mnemonicCode>MHS</mnemonicCode>
                    <clientServicePath>${kullaniciAktarim.istemciUrl}</clientServicePath>
                    <serviceName>muhasebe_islemleri</serviceName>
                    <userRoleFile>src/main/resources/security/UserRole.xml</userRoleFile>
                    <rolePermissionFile>src/main/resources/security/RolePermission.xml</rolePermissionFile>
                    <sqlOutFile>db-setting/kullanici.sql</sqlOutFile>
                </configuration>
            </plugin>
            <!-- Contract Driven Testing -->
            <plugin>
              <groupId>org.springframework.cloud</groupId>
              <artifactId>spring-cloud-contract-maven-plugin</artifactId>
              <version>${spring-cloud-contract.version}</version>
              <!-- Don't forget about this value !! -->
              <extensions>true</extensions>
              <configuration>
                <!-- Provide the base class for your auto-generated tests -->
                <packageWithBaseClasses>cdc</packageWithBaseClasses>
              </configuration>
                <executions>
                    <execution>
                        <id>spring-cloud-generateTests</id>
                        <phase>compile</phase>
                        <goals>
                            <goal>generateTests</goal>
                        </goals>
                    </execution>
                </executions>
              <dependencies>
                <dependency>
                  <groupId>org.springframework.cloud</groupId>
                  <artifactId>spring-cloud-contract-verifier</artifactId>
                  <version>${spring-cloud-contract.version}</version>
                </dependency>
              </dependencies>
            </plugin>
        </plugins>
    </pluginManagement>
</build>

<profiles>
    <profile>
        <id>development</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <properties>
            <spring.profiles.active>development</spring.profiles.active>
            <build.profile.id>dev</build.profile.id>
            <db.url>jdbc:postgresql://localhost:5432/maliye_muhasebeislemleri</db.url>
            <db.driver>org.postgresql.Driver</db.driver>
            <db.username>maliye_muhasebeislemleri</db.username>
            <db.password>Aa123456</db.password>
            <db.schema>public</db.schema>
            <db.context>development</db.context>
            <kullaniciAktarim.url>http://localhost:8080/maliye-kullanici/kullanici/kullanicilariGuncelle</kullaniciAktarim.url>
            <kullaniciAktarim.istemciUrl>http://localhost:8080/muhasebe</kullaniciAktarim.istemciUrl>
        </properties>
    </profile>
    <profile>
        <id>test</id>
        <properties>
            <spring.profiles.active>test</spring.profiles.active>
            <build.profile.id>test</build.profile.id>
            <db.url>jdbc:postgresql://mgm-01:5432/maliye?current=maliye_muhasebeislemleri</db.url>
            <db.driver>org.postgresql.Driver</db.driver>
            <db.username>maliye_muhasebeislemleri</db.username>
            <db.password>Aa123456</db.password>
            <db.schema>maliye_muhasebeislemleri</db.schema>
            <db.context>test</db.context>
            <kullaniciAktarim.url>http://mgm-10:8080/maliye-kullanici/kullanici/kullanicilariGuncelle</kullaniciAktarim.url>
            <kullaniciAktarim.istemciUrl>http://mgm-09:80/muhasebe</kullaniciAktarim.istemciUrl>
        </properties>
    </profile>

</profiles>

我尝试 运行 您的示例,但由于缺少依赖项而无法编译。无论如何,@khmarbaise 所说的完全正确。使用 Maven,您必须在 <build><plugins> 部分设置一个插件。如果您只在 <pluginManagement> 部分中使用它,那么它将不起作用。您可以查看 Spring 云合同示例,其中一切正常且设置良好 - https://github.com/spring-cloud-samples/spring-cloud-contract-samples/blob/master/producer/pom.xml#L73-L103