私はmavenの初心者で、android-maven-pluginを使用してAndroidプロジェクトをビルドするように構成しようとしています。assets ディレクトリに application.properties ファイルがあり、さまざまなアプリケーション設定が含まれています。そして、私は自分のポンからこの値を取得したいと考えています。プロパティファイルで、1つのプロパティを次のように定義します
myFilteredProperty=${helloFromPOM}
また、POM で同じプロパティを定義します。
<properties>
<helloFromPOM>MY PROPERTY</helloFromPOM>
</properties>
アセット ディレクトリのフィルタリングを有効にしました
<build>
...
<resources>
<resource>
<directory>${project.basedir}/assets</directory>
<filtering>true</filtering>
</resource>
</resources>
...
</build>
そして、android-maven-plugin のサンプルのようにリソース プラグインを構成します。
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<executions>
<execution>
<phase>initialize</phase>
<goals>
<goal>resources</goal>
</goals>
</execution>
</executions>
</plugin>
しかし、このプロパティを使用してアプリケーションで Toast を表示しようとすると、MY PROPERTY の代わりに ${helloFromPOM} が表示されます。
Maven によって生成されたターゲット ディレクトリでは、このプロパティ ファイルが 2 つの場所に表示されます。
- /target/generated-sources/combined-assets/assets/application.properties
- /target/myapp-0.0.1-SNAPSHOT.apk\application.properties
最初は間違っています。MY PROPERTY ではなく ${helloFromPOM} が含まれています。第二に、apk ファイルの内部は正しいです。しかし、デバイスにこの apk をインストールすると、間違った値 ${helloFromPOM} が表示されます。
私は何を間違えましたか?
編集
答えてくれてありがとう、試してみましたが、このエラーが発生しました:
[エラー] ソースの生成中にエラーが発生しました。org.apache.maven.plugin.MojoExecutionException: com.jayway.maven.plugins.android.phase01generatesources.GenerateSourcesMojo.generateR(GenerateSourcesMojo.java:338) で com.jayway.maven.plugins.android.phase01generatesources.GenerateSourcesMojo.execute( GenerateSourcesMojo.java:102) org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101) org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209) org.apache .maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder org.apache.maven.lifecycle の .buildProject(LifecycleModuleBuilder.java:84)。 http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
POM でコメント<resourceDirectory>${project.build.directory}/filtered-assets</resourceDirectory>
すると、ビルドは正常に完了しますが、フィルター処理されたアセットは使用されません。
cmd.exe /X /C ""C:\Program Files\Android\android-sdk\platform-tools\aapt.exe" package -m -J D:\projects\myapp\target\generated-sources\r -M D:\projects\myapp\AndroidManifest.xml -S D:\projects\myapp\target\filtered-assets --auto-add-overlay -A D:\projects\myapp\assets -I "C:\Program Files\Android\android-sdk\platforms\android-8\android.jar""
また、コマンドラインでこれを実行しようとすると、次のエラーが発生します: invalid resource directory name: D:\projects\myapp\target\filtered-assets/application.properties
. フィルタリングされたアセットの後のバックスラッシュではなく、間違ったスラッシュ。に変更<resourceDirectory>${project.build.directory}/filtered-assets</resourceDirectory>
して<resourceDirectory>${project.build.directory}\filtered-assets</resourceDirectory>
も役に立ちません。
PS私のプラグインセクションは次のようになります
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<executions>
<execution>
<phase>initialize</phase>
<goals>
<goal>resources</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
<plugin>
<groupId>com.jayway.maven.plugins.android.generation2</groupId>
<artifactId>android-maven-plugin</artifactId>
<version>3.2.0</version>
<configuration>
<sdk>
<platform>8</platform>
</sdk>
<emulator>
<avd>2.3.3_API-10</avd>
</emulator>
<undeployBeforeDeploy>true</undeployBeforeDeploy>
<resourceDirectory>${project.build.directory}/filtered-assets</resourceDirectory>
</configuration>
<extensions>true</extensions>
</plugin>