【问题标题】:How to stop Maven upgrading to latest Google Cloud SDK如何阻止 Maven 升级到最新的 Google Cloud SDK
【发布时间】:2019-10-18 12:21:09
【问题描述】:

我刚刚将我的最新代码部署到 GCP。我使用 maven,最近使用 appengine-maven-plugin 从 com.google.appengine 1.9.58 迁移到最新的 com.google.cloud.tools。

我上个月部署的版本是 Cloud SDK 版本 265.0.0。当我今天部署我的新代码时,它把我升级到了 267.0.0。如何防止这种情况发生并控制我使用的 SDK 版本。

我尝试向我的 POM 添加依赖项:

<dependency>
  <groupId>com.google.cloud.tools</groupId>
  <artifactId>appengine-maven-plugin</artifactId>
  <version>265.0.0</version>
</dependency>

但这失败了。 根据我的评论,当我运行 mvn appengine:deploy 或 mvn appengine:run 时,Cloud SDK 会升级到最新版本

谢谢 蒂姆N

POM 文件:

<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">

    <modelVersion>4.0.0</modelVersion>
    <packaging>war</packaging>
    <version>1.0</version>

    <groupId>com.company.app</groupId>
    <artifactId>xxxyyydb</artifactId>

    <properties>
        <appengine.app.version>1</appengine.app.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <prerequisites>
        <maven>3.6.1</maven>
    </prerequisites>

    <dependencies>
        <!-- Compile/runtime dependencies -->
        <dependency>
            <groupId>com.google.appengine.tools</groupId>
            <artifactId>appengine-gcs-client</artifactId>
            <version>0.6</version>
        </dependency>        
        <dependency>
            <groupId>com.google.appengine</groupId>
            <artifactId>appengine-api-1.0-sdk</artifactId>
            <version>1.9.58</version>
        </dependency>
        <dependency>
            <groupId>org.glassfish.jersey.containers</groupId>
            <artifactId>jersey-container-servlet-core</artifactId>
            <version>2.17</version>
        </dependency>
        <dependency>
            <groupId>org.glassfish.jersey.media</groupId>
            <artifactId>jersey-media-moxy</artifactId>
            <version>2.17</version>
        </dependency>
        <dependency>
            <groupId>commons-codec</groupId>
            <artifactId>commons-codec</artifactId>
            <version>1.10</version>
        </dependency>
        <dependency>
            <groupId>com.googlecode.objectify</groupId>
            <artifactId>objectify</artifactId>
            <version>5.1.5</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.5</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>javax.inject</groupId>
            <artifactId>javax.inject</artifactId>
            <version>1</version>
        </dependency>
        <dependency>
            <groupId>javax.jdo</groupId>
            <artifactId>jdo-api</artifactId>
            <version>3.1</version>
        </dependency>
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.3.1</version>
        </dependency>
        <dependency>
            <groupId>com.github.mpkorstanje</groupId>
            <artifactId>simmetrics-core</artifactId>
            <version>3.2.3</version>
        </dependency>
    </dependencies>

    <build>
        <outputDirectory>${project.build.directory}/${project.build.finalName}/WEB-INF/classes</outputDirectory>
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>versions-maven-plugin</artifactId>
                <version>2.1</version>
                <executions>
                    <execution>
                        <phase>compile</phase>
                        <goals>
                            <goal>display-dependency-updates</goal>
                            <goal>display-plugin-updates</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <version>3.2</version>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>2.6</version>
            </plugin>
            <plugin>
                <groupId>com.google.cloud.tools</groupId>
                <artifactId>appengine-maven-plugin</artifactId>
                <version>2.0.0</version>
                <configuration>
                    <projectId>xxxyyydb</projectId>
                    <version>1</version>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

【问题讨论】:

  • Maven 不会自动更新依赖项。你可能看错地方了。
  • 它发生在我做了一个 mvn 包后跟一个 mvn appengine:run 时,所以 maven 中的某些东西导致重新下载新的 Cloud SDK。想法?
  • 那么请将您的 POM 添加到问题中。如果您继承了 appengine 插件的配置,请同时添加。
  • POM 文件已添加到原始帖子中。任何意见,将不胜感激。谢谢
  • 我在您的 pom.xml 文件中找不到任何可能导致此自动更新的内容。你能告诉我你是否使用启动脚本吗?

标签: maven google-app-engine


【解决方案1】:

我找到(并阅读了!)appengine-maven-plugin 用户指南: https://github.com/GoogleCloudPlatform/app-maven-plugin/blob/master/USER_GUIDE.md

在我的 pom.xml 插件的配置部分设置 cloudSdkVersion 允许我强制 SDK 版本。没有它,插件总是会下载最新的 Cloud SDK。

    <plugin>
        <groupId>com.google.cloud.tools</groupId>
        <artifactId>appengine-maven-plugin</artifactId>
        <version>2.0.0</version>
        <configuration>
           <projectId>xxxyyyProjectID</projectId>
           <version>1</version>
           <cloudSdkVersion>267.0.0</cloudSdkVersion>
        </configuration>
    </plugin>

【讨论】:

  • 这对我有用,但 appengine:run 坚持用不同名称的 xxxbundled-python.zip 替换当前版本:347,它也是 347。
  • 然后必须安装 Cloud SDK(在我的情况下使用 Windows 安装程序),因为事实证明 maven sdk 不执行 gcloud beta auth application-default login 没有它devserver 无法使用数据存储。想知道为什么它是测试版,如果它是必不可少的。
猜你喜欢
  • 2011-09-23
  • 2017-03-03
  • 2014-09-14
  • 2021-06-03
  • 2020-10-13
  • 1970-01-01
  • 2014-09-06
  • 1970-01-01
  • 2020-05-09
相关资源
最近更新 更多