我正在开发一个使用Maven作为构建工具的Android应用程序。我设法正确设置了一切(maven依赖项导出到apk等),但是我还有一个问题让我发疯。
我想在我的POM文件中包含对simpleframework的xml解析器的依赖,定义如下:
<dependency>
<groupId>org.simpleframework</groupId>
<artifactId>simple-xml</artifactId>
<version>2.5.3</version>
</dependency>
当我在项目上发出mvn install
时,出现以下错误(截断):
trouble processing "javax/xml/namespace/NameSpaceContext.class" ...
我知道引用这些javax类的简单xml解析器会导致错误,但是我还没有找到解决方案(设置--core-library标志是没有用的)。
我目前正在尝试使用 maven-jarjar 插件重新打包依赖项,但这似乎也不起作用。
谁能帮我解决这个问题?提前非常感谢!
像这样定义你的 simple-xml depedence:
<dependency>
<groupId>org.simpleframework</groupId>
<artifactId>simple-xml</artifactId>
<version>2.6.1</version>
<exclusions>
<!-- StAX is not available on Android -->
<exclusion>
<artifactId>stax</artifactId>
<groupId>stax</groupId>
</exclusion>
<exclusion>
<artifactId>stax-api</artifactId>
<groupId>stax</groupId>
</exclusion>
<!-- Provided by Android -->
<exclusion>
<artifactId>xpp3</artifactId>
<groupId>xpp3</groupId>
</exclusion>
</exclusions>
</dependency>
我使用 android-maven-plugin,在 POM 中将<coreLibrary>true</coreLibrary>
添加到插件的 <configuration>
标签中对我有用。但是,有一个错误:https://github.com/jayway/maven-android-plugin/pull/34,您需要包含该错误以修复您正在使用的插件,因为该错误要到 3.0 才能修复。以下是我如何使用 2.9.0-SNAPSHOT 让它为我工作。
- 添加一个指向 http://oss.sonatype.org/content/repositories/jayway-snapshots/的插件存储库以获取 2.9.0-SNAPSHOT
- 更新您的插件版本以使用 2.9.0-SNAPSHOT 并将
true 添加到 pom.xml - 获取修复:Git 克隆 https://github.com/kevinpotgieter/maven-android-plugin.git
- 删除 src/test/java/com:这样测试就不会失败
- MVN 封装
- 复制它并覆盖 .m2 中的本地 maven 缓存(您可能需要删除您的插件存储库,您的每次都会被覆盖。
修复进入 2.9.0-SNAPSHOT 后,将不需要步骤 3-6。
2010 年 7 月更新:2.9.0-beta-4 已修复,因此如果您使用 2.9.0-beta-4 或更高版本,则不需要上述解决方法。我测试了 2.9.0-beta-5,效果很好。
Spring Android使用Maven来集成Simple。看看下面的URL,它应该提供有关如何让Maven使用Simple的指针。
http://static.springsource.org/spring-android/docs/1.0.x/reference/html/rest-template.html