Проект App Engine FLEX Maven: фильтрация файлов app.yaml - PullRequest
0 голосов
/ 21 марта 2019

У меня есть проект Maven, основанный на Google App Engine FLEX с Java времени выполнения. В этом проекте у меня есть 2 профиля, один для тестовой среды, другой для производственной среды:

<profiles>
    <profile>
        <id>test</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <properties>
            <!-- profile conf -->
            <profile.id>test</profile.id>
            <!-- build config -->
            <app.deploy.project>my-test-project</app.deploy.project>
            <app.deploy.promote>true</app.deploy.promote>
            <!-- project config -->
            <project.config.service>my-service-name-1</project.config.service>
            <project.config.host>d</project.config.host>
            <project.config.username>e</project.config.username>
        </properties>
    </profile>
    <profile>
        <id>production</id>
        <properties>
            <!-- profile conf -->
            <profile.id>production</profile.id>
            <!-- build config -->
            <app.deploy.project>my-production-project</app.deploy.project>
            <app.deploy.promote>false</app.deploy.promote>
            <!-- project config -->
            <project.config.service>my-service-name-2</project.config.service>
            <project.config.host>a</project.config.host>
            <project.config.username>b</project.config.username>
        </properties>
    </profile>
</profiles>

А это мой текущий src/main/appengine/app.yaml файл:

runtime:    java
env:        flex
threadsafe: true
service:    ${project.config.service}

handlers:
- url: /.*
  script: this field is required, but ignored
  secure: always

automatic_scaling:
  min_num_instances: 1
  max_num_instances: 20

env_variables:
  host: "${project.config.host}"
  username: "${project.config.username}"

Поскольку эти файлы (после фильтрации) необходимо сохранить в папке target\appengine-staging, я не могу создать правильную конфигурацию Maven, чтобы отфильтровать файл и создать его в соответствующей папке.

Поскольку это не файл resource, часть <resources> в pom.xml не применима. Кроме того, maven-war-plugin с конфигурацией фильтрации также не применим, поскольку эти файлы не помещаются в сам файл war.

Я пробовал что-то подобное

<plugin>
    <artifactId>maven-war-plugin</artifactId>
    <version>3.1.0</version>
    <configuration>
        <archiveClasses>true</archiveClasses>
        <webResources>
            <resource>
                <directory>${basedir}/src/main/appengine</directory>
                <includes>
                    <include>app.yaml</include>
                </includes>
                <filtering>true</filtering>
                <targetPath>../appengine-staging</targetPath>
            </resource>
        </webResources>
    </configuration>
</plugin>

но <targetPath> запускается из каталога WAR без возможности выбора другой папки. Есть ли способ правильно отфильтровать этот файл?

...