2011-11-26 13 views
5

私はjavaを少し新しくしています。私はいくつかの用語を不完全に使うかもしれない。外部のjarファイル(これはmavenアーティファクトにはない)からクラスを持つmavenプロジェクトをコンパイルする

コアJava言語の一部ではないクラスが必要なので、ビルドにはmavenを使用しているプロジェクトを開発していますので、適切な<dependency>セクションをpom.xmlに追加しましたmvnbrowser.comは私の本当の理解なしに)、私は自分が望むクラスを使用することができました。よく働く。

これで、使用したいJavaクラスが見つかりました。これは明らかに、Mavenアーティファクトでは使用できません。アンドロイドSDKと一緒に配布されているcom.android.sdklib.build.ApkBuilderです。私は自分のコードを動作させるためにスタンドアロンのJavaプログラムを書いた。私はjavacでコンパイルし、mavenではコンパイルしません。うまく動作します。そのため、私は、sdklib.jarの希望のクラスを含むjarファイルを私のjre/lib/extディレクトリ(FreeBSDマシンの/usr/local/jdk1.6.0/jre/lib/ext)に入れ、私のimport com.android.sdklib.build.ApkBuilderラインはうまくコンパイルされ、ApkBuilderを参照して問題なく使用できます。私は私のMavenプロジェクトに私の作業コードをコピーし、そしてmvn projectを構築しようとしたとき

は今、私は、インポート行にpackage com.android.sdklib.build does not existエラー、私はApkBuilderを参照cannot find symbol: class ApkBuilderエラーが発生します。

ネットを見渡すと、android-maven-pluginが見つかりました:http://code.google.com/p/maven-android-plugin/です。それはmaven-android-sdk-deployerここに:https://github.com/mosabua/maven-android-sdk-deployer私に呼ばれました。これらのリードは最初は有望でしたが、私が知る限り、その目的は、私がやろうとしているものではない、mavenを使ったアンドロイドアプリケーションの開発です。私はちょうど私のjavaプログラムがandroid apkファイルを操作することを望むが、私のJavaプログラム自体はアンドロイドデバイス上で実行されていません。また、アンドロイドSDKは私が使用しているFreeBSDではなくLinuxで動作するように作られていますので、maven-android-sdk-deployerのインストール手順に従うことはできません。私もmaven-apkbuilder-pluginと呼ばれるアーティファクトを見つけましたが、それはまたアンドロイドアプリケーションを作成する目的であるようですが、私はそれについてのドキュメントを見ませんでした。だから私はこれらのリードを追求していません。

mvn packageを実行するとsdklib.jarファイルのために私のjre/lib/extフォルダを見るようにコンパイラを取得するのが一番簡単なことです。しかし、それは行く方法ではないかもしれません。コンパイラがsdklib.jarを見つける原因となるpom.xmlに簡単な変更が加えられているかもしれません。私はhttp://maven.apache.org/pom.html#Build_Settingsのpomドキュメントを見ましたが、それを行う方法は見当たりませんでした。とにかく、少なくとも1つの解決策があると確信しています。私はちょうどそれを知らない(まだ)。

私のオプションは何ですか?私のビルドプロジェクトでApkBuilderクラスを使用する最良の方法は何ですか?私はこの質問に自分自身で答えることができたと思います。ありがとう!!

+0

あなたが問題の原因を正しく識別している - JARをクラスパスから欠落しています。 'jre/lib/ext'の強制給電は理想的ではありません。いくつかのMaven + Android開発ツールを調べてみてください(私はAndroidデベロッパについては何も知らない)。 M2e-Android(http://rgladwell.github.com/m2e-android/)は興味深いようです。それは、「Mavenの依存関係管理の力をADTにもたらします」 –

答えて

8

jarを参照しようとしているのであれば、最も簡単な解決策はローカルリポジトリにjarファイルを手動で追加することです。詳細については、hereを参照してください。

一言で言えば:

mvn install:install-file  \ 
    -Dfile=<path-to-file>  \ 
    -DgroupId=<group-id>  \ 
    -DartifactId=<artifact-id> \ 
    -Dversion=<version>  \ 
    -Dpackaging=jar 

あなたあなたがgroup-idのために好きな使用、artifact-id、およびversionがかもしれないが、彼らはそれがレポで利用可能だった場合、あなたが期待するものに似たものになるはずです。

Androidプロジェクトを実際に作成していないので、これで十分です。


ここで私は質問をしました。

MavenビルドでMavenリポジトリから利用できないライブラリを使用するにはどうすればよいですか?

(偶然にも、ということ、そしてその短い方のバリエーションは、あなたの最後の質問に答えるために、あなたが読んでいる「はずです」リンクを持参してください:)