3

このガイドに従って、Maven プロジェクトに Google Cloud Endpoints を実装しました。

ここに私のpom.xmlのプロパティがあります

<properties>
    <appengine.app.id>xxxxxxxx</appengine.app.id>
</properties>

これが pom.xml の私の maven-war-plugin 構成です

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.4</version>
    <configuration>

        <!-- http://maven.apache.org/plugins/maven-war-plugin/examples/adding-filtering-webresources.html -->
        <!-- To prevent corrupting your binary files when filtering is enabled, you can configure a list of file extensions that will not be filtered. -->
        <nonFilteredFileExtensions>
            <nonFilteredFileExtension>p12</nonFilteredFileExtension>
        </nonFilteredFileExtensions>

        <archiveClasses>true</archiveClasses>

        <!-- https://cloud.google.com/appengine/docs/java/tools/maven#cloud_endpoints_goals -->
        <webXml>${project.build.directory}/generated-sources/appengine-endpoints/WEB-INF/web.xml</webXml>

        <webResources>

            <!-- in order to interpolate version from pom into appengine-web.xml -->
            <resource>
                <directory>${basedir}/src/main/webapp/WEB-INF</directory>
                <filtering>true</filtering>
                <targetPath>WEB-INF</targetPath>
            </resource>

            <resource>
                <directory>${project.build.directory}/generated-sources/appengine-endpoints</directory>
                <includes>
                    <include>WEB-INF/*.discovery</include>
                    <include>WEB-INF/*.api</include>
                </includes>
            </resource>

        </webResources>

    </configuration>
</plugin>

これが私の appengine-web.xml ファイルの先頭です

<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">

    <application>${appengine.app.id}</application>
    <version>${project.version}</version>
    ....
</appengine-web-app>

生成データはこちら

ここに画像の説明を入力

.discoveryファイルが作成中に maven プロパティを解決 しない問題

mystore-v1-rest.discovery

"protocol": "rest",
"baseUrl": "https://${appengine.app.id}.appspot.com/_ah/api/mystore/v1/",
"basePath": "/_ah/api/mystore/v1/",
"rootUrl": "https://${appengine.app.id}.appspot.com/_ah/api/",
"servicePath": "mystore/v1/",

mystore-v1-rpc.discovery

protocol": "rpc",
"rootUrl": "https://${appengine.app.id}.appspot.com/_ah/api/",
"rpcUrl": "https://${appengine.app.id}.appspot.com/_ah/api/rpc",
"rpcPath": "/_ah/api/rpc",

このファイルが、WEB-INF フォルダーに保存されている他のファイルのようにフィルター処理されないのはなぜですか?

多くのファイル (WEB-INF 親フォルダーの下) で Maven 変数を使用していますが、値は問題なく置き換えられます。

.discoveryファイルでもフィルタリングできるように構成を調整するにはどうすればよいですか?

application(lib 生成中に) appengine-web.xml からの値が値を解決せずに取得され、Maven ビルド中にフィルタリングが適用されないと思います。

<filtering>true</filtering>リソース構成に追加しようとしましたが、成功しませんでした

--- 編集 25/01/2014 ---

いくつかの提案を受けた後、元の投稿で書き忘れたことを明確にする必要があります。

問題はに関連していますendpoints_get_discovery_doc

ここにMavenの目標のログがあります

API Discovery Document written to ..\target\generated-sources\appengine-endpoints\WEB-INF/mystore-v3-rpc.discovery
API Discovery Document written to ..\target\generated-sources\appengine-endpoints\WEB-INF/mystore-androidtest-rpc.discovery

ファイル\target\generated-sources\appengine-endpoints\WEB-INF/mystore-v3-rpc.discoveryは endpoints ゴールによって生成され、フィルタリングされません。

フィルタリング機能があっても

<resource>
    <directory>${project.build.directory}/generated-sources/appengine-endpoints</directory>
    <filtering>true</filtering>
    <includes>
        <include>WEB-INF/*.discovery</include>
        <include>WEB-INF/*.api</include>
    </includes>
</resource>

生成されたファイルはフィルタリングされません。

ファイルをフォルダに直接書き込むと${project.build.directory}/generated-sources/appengine-endpoints、ファイルがフィルタリングされないことが問題でしょうか?

4

2 に答える 2

2
    <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.4</version>
            <configuration>
                <webXml>${project.build.directory}/generated-sources/appengine-endpoints/WEB-INF/web.xml</webXml>
                <webResources>
                    <!-- in order to interpolate version from pom into appengine-web.xml -->
                    <resource>
                        <directory>${basedir}/src/main/webapp/WEB-INF</directory>
                        <filtering>true</filtering>
                        <targetPath>WEB-INF</targetPath>
                    </resource>
                    <resource>
                        <!-- this is relative to the pom.xml directory -->
                        <directory>${project.build.directory}/generated-sources/appengine-endpoints</directory>
                        <!-- the list has a default value of ** -->
                        <includes>
                            <include>WEB-INF/*.discovery</include>
                            <include>WEB-INF/*.api</include>
                        </includes>
                        <filtering>true</filtering>
                    </resource>
                </webResources>
            </configuration>
        </plugin>
于 2015-01-25T04:28:00.573 に答える
0
<!--User the below Line, I also had the same problem that I solved using Note: <version>${app.version}</version><appId>${app.id}</appId> folow as per your configuration --!>                                
    <plugin>
    <groupId>com.google.appengine</groupId>
            <artifactId>appengine-maven-plugin</artifactId>
            <version>${appengine.version}</version>
            <configuration>
                <enableJarClasses>false</enableJarClasses>
                <version>${app.version}</version>
                <appId>${app.id}</appId>
                <!-- Comment in the below snippet to bind to all IPs instead of just localhost -->
                <address>0.0.0.0</address>
                <port>8080</port>
                <!-- Comment in the below snippet to enable local debugging with a remote debugger
                     like those included with Eclipse or IntelliJ -->
                <jvmFlags>
                  <jvmFlag>-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n</jvmFlag>
                </jvmFlags>
            </configuration>
            <executions>
                <execution>
                    <goals>
                        <goal>endpoints_get_discovery_doc</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
于 2017-05-13T17:57:58.900 に答える