2

我的android项目结构(MyApp是Android Studio项目的一个模块):

MyApp
  - external/
      mylib.jar
  - src/
  - res/
  ...
  build.gradle

我首先有一个外部 jar,我想将它上传到我本地的 maven repo,我的 gradle 构建看起来像这样:

configurations {
    externalJar
}

artifacts {

    externalJar file: file('external/mylib.jar')
    artifact = 'exernalLib'
    version = '1.1.0'
}

uploadExternalJar {
    repositories {
        mavenDeployer {
            repository(url: "file://${System.properties['user.home']}/.m2/repository")
        }
    }
}

有用!

然后,我还想将我的项目 jar 工件上传到本地 maven repo。我添加了以下代码:

group = 'com.my.app'
uploadArchives {
    repositories {
        mavenDeployer {
            repository(url: "file://${System.properties['user.home']}/.m2/repository")
            pom.project {
                version  '1.2.1'
                artifactId  'MyApp'
                packaging 'jar'
            }

        }
    }
} 

当我运行时./gradlew build,两个任务都被执行,但是当我在本地 maven 中检查 MyApp-1.2.1.jar 时,它的内容被外部 lib jar 覆盖。

我不确定我做错了什么。但是我怎么能将外部 jar 和我的项目 jar 上传到本地 maven 呢?

4

1 回答 1

0

我完全不确定,但我可以尝试猜测刚刚发生的事情。uploadArchives {...}根据 gradle 规范的任务是类型:(type: Upload)

所以让我们上传规范,我们在这里得到了什么:

特性:

  • 人工制品
  • 配置
  • 存储库
  • 上传描述符

我猜你有:

configurations {
    externalJar
}

上面的uploadArchives 作为全局配置,所以uploadArchives 已经把你的externalJar 作为MyApp-1.2.1.jar 的配置。

也许尝试在confirguration{}里面添加空uploadArchives {}

于 2014-11-12T09:17:04.807 回答