Apigee 部署奇怪地缺少资源,可能是 Windows 上的 Maven 问题?

Bizarre missing resource for Apigee deploy, possible Maven issue on Windows?

所以我得到这个错误:

[ERROR] Failed to execute goal io.apigee.build-tools.enterprise4g:apigee-edge-maven-plugin:1.0.1:deploy (default-cli) on project reporting: MojoExecutionException: com.google.api.client.http.HttpResponseException: 400 Bad Request
[ERROR] {
[ERROR] "code" : "messaging.config.beans.InvalidResourceURLRef",
[ERROR] "message" : "Invalid resource url ref jsc://js_validateReportingWriteScope3.js in policy js_validateReportingWriteScope3 in cambiahealth-nonprod",
[ERROR] "contexts" : [ ],
[ERROR] "cause" : {
[ERROR] "code" : "messaging.config.beans.ResourceDoesNotExist",
[ERROR] "message" : "Resource with name js_validateReportingWriteScope3.js and type jsc does not exist",

文件确实存在。我试过:

  1. mvn clean
  2. mvn dependency:purge-本地存储库
  3. IntelliJ 使缓存无效并重新启动
  4. 删除所有本地文件并从远程仓库克隆
  5. 我尝试将文件重命名为新名称,希望它能使用新文件名(因此您在文件名中看到“3”)

我的同事可以进行部署,但他们使用的是 Mac。我在 Windows.

失败的命令是:

mvn apigee-enterprise:deploy -P$environment -Dusername=$username -Dpassword=$password

有效的命令(但我们不想使用,因为它擦除当前部署并替换它,丢失历史信息):

mvn apigee-enterprise:deploy -P$environment -Dapigee.options=clean -Dusername=$username -Dpassword=$password

我应该尝试什么?这个错误对我来说毫无意义。 .js 文件确实存在。

将这个 XML 块放在父 POM 的下方可以解决眼前的问题;但是,请注意,它对我产生了副作用:它破坏了我们包含来自父 POM 和当前代理之外的 "common" 代理的其他 Apigee 策略。因此,这只是部分解决方案。我的最终解决方案是转换为 Mac,因为这个问题只发生在 Windows 台计算机上。

<!-- copy the full apiproxy folder to target folder -->
<plugin>
    <artifactId>maven-resources-plugin</artifactId>
    <version>2.6</version>
    <executions>
        <execution>
            <id>copy-resources</id>
            <phase>package</phase>
            <goals>
                <goal>copy-resources</goal>
            </goals>
            <configuration>
                 <!--this is important -->
                <overwrite>true</overwrite>
                 <!--target -->
                <outputDirectory>${target.root.dir}/apiproxy</outputDirectory>
                <resources>
                    <resource>
                         <!--source -->
                        <directory>${project.root.dir}/apiproxy</directory>
                    </resource>
                </resources>
            </configuration>
        </execution>
    </executions>
</plugin>