3

我在我的 Android 项目中使用 Maven,以及 android-maven-plugin。在我的项目 pom.xml 文件中,我像这样声明依赖项:

<dependency>
  <groupId>com.viewpagerindicator</groupId>
  <artifactId>library</artifactId>
  <version>2.4.1</version>
  <type>apklib</type>
</dependency>

ViewPagerIndicator 依赖于 Android 4.1.1.4,它位于此处的 Maven Central 上。但是,我不是使用 Android 4.1.1.4 构建的,而是基于 4.2.2 r2 构建的,它的声明如下:

<dependency>
  <groupId>android</groupId>
  <artifactId>android</artifactId>
  <version>4.2.2_r2</version>
</dependency>

这个工件不在 Maven Central 上,我正在使用maven-android-sdk-deployer将 Android 工件推送到我的仓库中。

如果我打开终端并使用 maven 构建,则没有问题。问题是当我将项目导入 IntelliJ 并尝试构建时。模块设置(正确)抱怨 ViewPagerIndicator apklib 模块中 Android 4.1.1.4 依赖项的路径已损坏。

我检查了我的 .m2/repository 文件夹中的 Android 4.1.1.4 jar,甚至没有文件夹,这意味着 Maven 从未下载过它。我猜这与使用 Maven 构建时 maven-android-plugin 的工作方式与 IntelliJ 的构建方式有关。

我知道我可以自己抓取 jar 并自行部署,但我正在寻找更好的解决方案,因此我团队中的新成员只需要抓取源代码而无需执行其他任何操作来构建项目。我已经为团队设置了 Nexus,因此我们不必继续手动部署第三方 jar,并在每个人的机器上运行 sdk 部署程序。我希望能够将源代码交给新的开发人员,他们就可以使用它运行。

4

2 回答 2

1

它适合我们的方式(结合 maven-android-sdk-deployer:

<dependency>
    <groupId>com.viewpagerindicator</groupId>
    <artifactId>library</artifactId>
    <version>${viewpagerindicator.version}</version>
    <type>apklib</type>
    <exclusions>
        <exclusion>
            <groupId>com.google.android</groupId>
            <artifactId>android</artifactId>
        </exclusion>
        <exclusion>
            <groupId>com.google.android</groupId>
            <artifactId>support-v4</artifactId>
        </exclusion>
    </exclusions>
</dependency>

我们也在使用 IntelliJ 进行构建。通常只需打开 pom.xml 文件并对“您想将其作为项目打开吗?”说“是”。迅速的。

于 2013-07-10T01:13:03.813 回答
0

以下是事实:我的 maven 项目依赖于 maven 本身可构建的 apklib 模块,但不是通过 intellij 构建的。这种情况的解决方法如下:

  1. 将 maven 项目导入 intellij
  2. 打开 apklib 模块设置并将显式依赖 jars(android、support...)添加到模块中。不要导出此依赖项。您还可以设置提供的范围。

这个对我有用。

于 2013-11-17T09:34:30.017 回答