1

IntelliJ で問題なくビルドできる Java Android プロジェクトがありますが、(Cloudbees で) Jenkins を実行している CI サーバーでビルドしたいと考えています。ant をいじるよりも、ABS の依存関係を処理するために Maven を使用する方が賢明なように思われました。依存関係を宣言する単純な pom を作成しました。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>com.myapp</groupId>
    <artifactId>android</artifactId>
    <version>1.0.0</version>
  </parent>
  <groupId>com.myapp</groupId>
  <artifactId>myapp</artifactId>
  <version>1.0.1-SNAPSHOT</version>
  <name>myapp</name>
  <packaging>pom</packaging>

  <properties>
    <android.version>4.2.1_r1</android.version>
    <android.sdk.platform>17</android.sdk.platform>
    <google.android.maps.version>17</google.android.maps.version>
  </properties>

  <dependencies>
    <dependency>
      <groupId>com.actionbarsherlock</groupId>
      <artifactId>actionbarsherlock</artifactId>
      <version>4.1.0</version>
      <type>apklib</type>
    </dependency>
  </dependencies>

</project>

ローカル マシンで実行すると、次のようになります。

[ERROR]   The project com.myapp:myapp:1.0.1-SNAPSHOT (C:\...\myapp\pom.xml) has 1 error
[ERROR]     Non-resolvable parent POM: Failure to find com.myapp:android:pom: 1.0.0 in http://repo1.maven.org/maven2 was cached in the local repository, resolution will not be reattempted until the update interval of central has elapsed or updates are forced and 'parent.relativePath' points at wrong local POM @ line 4, column 11 -> [Help 2]

私はそれが何を意味するのか分かりません。なぜ失敗したのか、このエラーの意味を理解できる人はいますか? ActionBarSherlock Android アプリを作成して Jenkins/cloudbees で動作させるためのヒントがあれば、私は最も感謝しています。

4

1 に答える 1

1

ivy プラグインを使用して、Maven を ANT ビルドと統合することができます。

次のタスクは、「actionbarsherlock-4.2.0.apklib」ファイルをプルダウンし、それ (およびその依存関係) を ANT パス「compile.path」に追加します。

<ivy:cachepath pathid="compile.path">
    <dependency org="com.actionbarsherlock" name="actionbarsherlock" rev="4.2.0" conf="default"/>
</ivy:cachepath>

Maven の依存関係が機能しない理由は、Maven モジュールが "apklib" のパッケージ タイプを使用していることが原因である可能性があります。これは、代わりに以下が機能する可能性があることを意味します。

<dependency>
  <groupId>com.actionbarsherlock</groupId>
  <artifactId>actionbarsherlock</artifactId>
  <version>4.2.0</version>
</dependency>

詳細については、次を参照してください。

于 2012-12-04T21:37:40.040 に答える