maven build android project: 指定aidl文件位置
maven build android project: specify the location of aidl file
我的android项目只有aidl文件,项目结构如下:
MyProject/
src/
main/
com.my.aidl/
IMyService.aidl
pom.xml
我正在使用 Maven 构建我的 android 项目。我的 pom 使用 dexguard-maven-plugin 它是 android-maven-plugin[= 的扩展29=].
在插件配置中,我明确指定了源aidl文件的目录和生成的java文件的目录。
<build>
<plugins>
<plugin>
<groupId>com.saikoa.dexguard.maven</groupId>
<artifactId>dexguard-maven-plugin</artifactId>
<configuration>
<aidlSourceDirectory>
${project.basedir}/src/main/com/my/aidl
</aidlSourceDirectory>
<genDirectoryAidl>
${project.build.directory}/generated-sources/aidl/main/com/my/aidl
</genDirectoryAidl>
</configuration>
<extensions>true</extensions>
</plugin>
</plugins>
</build>
但是在我 运行 mvn clean install -e
之后,我得到了以下错误跟踪:
[ERROR] Failed to execute goal com.saikoa.dexguard.maven:dexguard-maven-plugin:6.1.18:generate-sources (default-generate-sources) on project MyProject: Execution default-generate-sources of goal com.saikoa.dexguard.maven:dexguard-maven-plugin:6.1.18:generate-sources failed. NullPointerException -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal com.saikoa.dexguard.maven:dexguard-maven-plugin:6.1.18:generate-sources (default-generate-sources) on project MyProject: Execution default-generate-sources of goal com.saikoa.dexguard.maven:dexguard-maven-plugin:6.1.18:generate-sources failed.
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:224)
at 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.buildProject(LifecycleModuleBuilder.java:84)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:317)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:152)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:555)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:214)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:158)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
Caused by: org.apache.maven.plugin.PluginExecutionException: Execution default-generate-sources of goal com.saikoa.dexguard.maven:dexguard-maven-plugin:6.1.18:generate-sources failed.
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:115)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
... 19 more
Caused by: java.lang.NullPointerException
at java.io.File.<init>(File.java:334)
at com.jayway.maven.plugins.android.phase01generatesources.GenerateSourcesMojo.generateAidlFiles(GenerateSourcesMojo.java:1266)
at com.jayway.maven.plugins.android.phase01generatesources.GenerateSourcesMojo.execute(GenerateSourcesMojo.java:343)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:106)
... 20 more
[ERROR]
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
怎么了?
几个月前有一个类似的问题,我将与呼叫相关的 aidl
文件放置到错误的位置(我从 Eclipse ANT 迁移到 Studio Gradle)。下面的 link对我的情况有帮助:
how can I add the aidl file to Android studio (from the in-app billing example)
And official document related to that:
http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Project-Structure
根据您的日志消息,有一个 nullexception。我猜目录不对。您是否尝试将 genDirectoryAidl 从 'generated-sources/aidl/main/com/my/aidl' 更改为 'generated-sources/aidl/'?也许如果你创建一个名为 'main/com/my/aidl' 的目录你就会成功。
希望这条消息能对您有所帮助。
正如我所见,可能是由某些未解决的依赖项引起的 NullPointerException。 Here 是类似问题的 link。
还尝试使用 -X 重新运行 maven 并向我们展示调试输出。
我的android项目只有aidl文件,项目结构如下:
MyProject/
src/
main/
com.my.aidl/
IMyService.aidl
pom.xml
我正在使用 Maven 构建我的 android 项目。我的 pom 使用 dexguard-maven-plugin 它是 android-maven-plugin[= 的扩展29=].
在插件配置中,我明确指定了源aidl文件的目录和生成的java文件的目录。
<build>
<plugins>
<plugin>
<groupId>com.saikoa.dexguard.maven</groupId>
<artifactId>dexguard-maven-plugin</artifactId>
<configuration>
<aidlSourceDirectory>
${project.basedir}/src/main/com/my/aidl
</aidlSourceDirectory>
<genDirectoryAidl>
${project.build.directory}/generated-sources/aidl/main/com/my/aidl
</genDirectoryAidl>
</configuration>
<extensions>true</extensions>
</plugin>
</plugins>
</build>
但是在我 运行 mvn clean install -e
之后,我得到了以下错误跟踪:
[ERROR] Failed to execute goal com.saikoa.dexguard.maven:dexguard-maven-plugin:6.1.18:generate-sources (default-generate-sources) on project MyProject: Execution default-generate-sources of goal com.saikoa.dexguard.maven:dexguard-maven-plugin:6.1.18:generate-sources failed. NullPointerException -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal com.saikoa.dexguard.maven:dexguard-maven-plugin:6.1.18:generate-sources (default-generate-sources) on project MyProject: Execution default-generate-sources of goal com.saikoa.dexguard.maven:dexguard-maven-plugin:6.1.18:generate-sources failed.
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:224)
at 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.buildProject(LifecycleModuleBuilder.java:84)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:317)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:152)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:555)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:214)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:158)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
Caused by: org.apache.maven.plugin.PluginExecutionException: Execution default-generate-sources of goal com.saikoa.dexguard.maven:dexguard-maven-plugin:6.1.18:generate-sources failed.
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:115)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
... 19 more
Caused by: java.lang.NullPointerException
at java.io.File.<init>(File.java:334)
at com.jayway.maven.plugins.android.phase01generatesources.GenerateSourcesMojo.generateAidlFiles(GenerateSourcesMojo.java:1266)
at com.jayway.maven.plugins.android.phase01generatesources.GenerateSourcesMojo.execute(GenerateSourcesMojo.java:343)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:106)
... 20 more
[ERROR]
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
怎么了?
几个月前有一个类似的问题,我将与呼叫相关的 aidl
文件放置到错误的位置(我从 Eclipse ANT 迁移到 Studio Gradle)。下面的 link对我的情况有帮助:
how can I add the aidl file to Android studio (from the in-app billing example)
And official document related to that:
http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Project-Structure
根据您的日志消息,有一个 nullexception。我猜目录不对。您是否尝试将 genDirectoryAidl 从 'generated-sources/aidl/main/com/my/aidl' 更改为 'generated-sources/aidl/'?也许如果你创建一个名为 'main/com/my/aidl' 的目录你就会成功。
希望这条消息能对您有所帮助。
正如我所见,可能是由某些未解决的依赖项引起的 NullPointerException。 Here 是类似问题的 link。 还尝试使用 -X 重新运行 maven 并向我们展示调试输出。