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",
文件确实存在。我试过:
- mvn clean
- mvn dependency:purge-本地存储库
- IntelliJ 使缓存无效并重新启动
- 删除所有本地文件并从远程仓库克隆
- 我尝试将文件重命名为新名称,希望它能使用新文件名(因此您在文件名中看到“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>
所以我得到这个错误:
[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",
文件确实存在。我试过:
- mvn clean
- mvn dependency:purge-本地存储库
- IntelliJ 使缓存无效并重新启动
- 删除所有本地文件并从远程仓库克隆
- 我尝试将文件重命名为新名称,希望它能使用新文件名(因此您在文件名中看到“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>