Dmi*_*sov 4 android maven maven-resources-plugin android-maven-plugin
我是maven的新手并试图配置它用android-maven-plugin构建我的android项目.我在assets目录中有一个application.properties文件,其中包含不同的应用程序设置.我想从我的pom中获取这些价值.在属性文件中,我将一个属性定义为
myFilteredProperty=${helloFromPOM}
Run Code Online (Sandbox Code Playgroud)
并在POM中定义相同的属性:
<properties>
<helloFromPOM>MY PROPERTY</helloFromPOM>
</properties>
Run Code Online (Sandbox Code Playgroud)
切换资产dir上的过滤
<build>
...
<resources>
<resource>
<directory>${project.basedir}/assets</directory>
<filtering>true</filtering>
</resource>
</resources>
...
</build>
Run Code Online (Sandbox Code Playgroud)
并为android-maven-plugin的示例配置recources 插件
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<executions>
<execution>
<phase>initialize</phase>
<goals>
<goal>resources</goal>
</goals>
</execution>
</executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)
但是当我试图在我的应用程序中使用此属性显示Toast时,我看到$ {helloFromPOM}而不是MY PROPERTY.
在我的maven生成的目标目录中,我在两个地方看到这个属性文件:
首先是错误的,它包含$ {helloFromPOM}而不是MY PROPERTY.其次,apk文件内部是正确的.但是当我在设备上安装这个apk时,它显示错误的值$ {helloFromPOM}.
我做错了什么?
编辑
谢谢你的回答,我尝试了,但得到这个错误:
[ERROR]生成源时出错.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)在org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)在org.apache.maven.lifecycle.internal.LifecycleModuleBuilder .buildProject(LifecycleModuleBuilder.java:84)在org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)在org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183 )org.apache.maven.lifecycle.internal.LifecycleS tarter.execute(LifecycleStarter.java:161)org.apache.maven.maven.DefaultMaven.doExecute(DefaultMaven.java:320)org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)atg.apache.maven .cli.MavenCli.execute(MavenCli.java:537)org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)org.apache.maven.cli.MavenCli.main(MavenCli.java:141 )在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)在java.lang.reflect中.方法.invoke(Method.java:597)org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java: 230)org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)org.codehaus.classworlds .Launche r.main(Launcher.java:47)在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java: 25)at java.lang.reflect.Method.invoke(Method.java:597)at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)引起:com.jayway.maven.plugins .android.ExecutionException:ANDROID-040-001:无法执行:Command = cmd.exe/X/C""C:\ Program Files\Android\android-sdk\platform-tools\aapt.exe"package -m - JD:\ projects\myapp\target\generated-sources\r -MD:\ projects\myapp\AndroidManifest.xml -SD:\ projects\myapp\target\filtered-assets --auto-add-overlay -AD:\ projects\myapp\assets -I"C:\ Program Files\Android\android-sdk\platforms\android-8\android.jar"",结果= 1在com.jayway.maven.plugins.android.CommandExecutor $ Factory $ 1. com.jayway.maven.plugins.android.phase01generat上的executeCommand(CommandExecutor.java:215)esources.GenerateSourcesMojo.generateR(GenerateSourcesMojo.java:336)... 28更多[INFO] ------------------------------ ------------------------------------------ [INFO] BUILD FAILURE [INFO] -------------------------------------------------- ---------------------- [INFO]总时间:4.307s [INFO]完成时间:6月6日星期六10:37:14 MSK 2012 [INFO]决赛记忆:7M/16M [INFO] ------------------------------------------ ------------------------------ [ERROR]无法执行目标com.jayway.maven.plugins.android.generation2:android -maven-plugin:3.2.0:project magent上的generate-sources(default-generate-sources):MojoExecutionException:ANDROID-040-001:无法执行:Command = cmd.exe/X/C""C:\ Program Files\Android\android-sdk\platform-tools\aapt.exe"package -m -JD:\ projects\myapp\target\generated-sources\r -MD:\ projects\myapp\AndroidManifest.xml -SD:\ projects\myapp\target\filtered-assets --auto-add-overlay -AD:\ projects\myapp\assets -I"C:\ Program Files\Android\android-sdk\platforms\android-8\android.jar"",Result = 1 - > [Help 1] [ERROR] [ERROR]要查看错误的完整堆栈跟踪,请使用-e开关重新运行Maven.[ERROR]使用-X开关重新运行Maven以启用完整的调试日志记录.[错误] [错误]有关错误和可能的解决方案的更多信息,请阅读以下文章:[错误] [帮助1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
当我<resourceDirectory>${project.build.directory}/filtered-assets</resourceDirectory>
在POM中评论时,构建完成成功,但它不使用过滤后的组件.
此外,我尝试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>
Run Code Online (Sandbox Code Playgroud)
现在它有效,我<resourceDirectory>${project.build.directory}/filtered-assets</resourceDirectory>
改为<assetsDirectory>${project.build.directory}/filtered-assets</assetsDirectory>
.结果POM:
<properties>
<myProperty>MY PROPERTY!!!!111</myProperty>
</properties>
<resources>
<resource>
<directory>${project.basedir}/assets</directory>
<filtering>true</filtering>
<targetPath>${project.build.directory}/filtered-assets</targetPath>
<includes>
<include>**/*.properties</include>
</includes>
</resource>
</resources>
<plugins>
<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>
<assetsDirectory>${project.build.directory}/filtered-assets</assetsDirectory>
</configuration>
<extensions>true</extensions>
</plugin>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8199 次 |
最近记录: |