ビルドツールとしてGradle(v 1.7)を使用してAndroidライブラリを操作すると、mavenプラグインを使用してタスクuploadArchivesを設定してリリースとデバッグの両方のバージョンを公開しましたlibをローカルMavenリポジトリにコピーします。
次のコードは、[OK]を動作します:Gradle and Android:複数のMavenアーティファクトを含むpom設定
// [...]
apply plugin: 'android-library'
// [...] nothing unusual
/*
* Define name of the apk output file (build/apk/<outputFile>)
*/
android.libraryVariants.all
{
variant ->
def outputName = "MyModule-${android.defaultConfig.versionName}-${variant.baseName}.aar"
variant.outputFile = new File("$buildDir/libs", outputName)
}
/*
* Publish to maven local repo (older style maven plugin)
* Used while android plugin is not fixed regarding maven-publish plugin
*
* type command "gradle uploadArchives" to publish the module into the
* local .m2 repository
*/
apply plugin: 'maven'
android.libraryVariants.all
{
variant ->
// add final apk to the 'archives' configuration
project.artifacts
{
archives variant.outputFile
}
}
def localRepoPath = "file://" + new File(
System.getProperty("user.home"), ".m2/repository").absolutePath
uploadArchives
{
repositories.mavenDeployer
{
repository(url: localRepoPath)
addFilter('debug') { artifact, file ->
artifact.name.contains("debug")
}
addFilter('release') { artifact, file ->
artifact.name.contains("release")
}
pom('debug').groupId = 'com.company'
pom('release').groupId = 'com.company'
pom('debug').artifactId = 'id'
pom('release').artifactId = 'id'
pom('debug').version = android.defaultConfig.versionName + "d"
pom('release').version = android.defaultConfig.versionName
pom.packaging = 'aar'
}
}
uploadArchives.dependsOn(assemble)
しかし、POMの設定をリファクタリングしようとすると:
uploadArchives
{
repositories.mavenDeployer
{
repository(url: localRepoPath)
addFilter('debug') { artifact, file ->
artifact.name.contains("debug")
}
addFilter('release') { artifact, file ->
artifact.name.contains("release")
}
pom.groupId = 'com.company'
pom.artifactId = 'id'
pom('debug').version = android.defaultConfig.versionName + "d"
pom('release').version = android.defaultConfig.versionName
pom.packaging = 'aar'
}
}
たartifactIdは次のように出力ファイル名として展開し、のgroupIdされますルートディレクトリの名前。このように、メイヴンレポに悪い道を与えている。
私はそれがなぜ、そして私が必要とするものを達成するためのよりクリーンな方法があるのかを知りたいと思います。
私のプロジェクトでは、出力 '.aar'の名前を変更する必要がありました。したがって、 'artifactId'に使用される' build.gradle'に 'archivesBaseName'を設定しました。たぶんこれが役立ちます。 – JJD
これは分かりましたか? –
@YuchenZhong残念ながら、この仕事は短期インターンシップの一部ではありませんでした。私は誰がプロジェクトを担当したのか、それがどのように扱われたのか分かりません。 – mklj