Gradle无法解析maven配置文件依赖关系

时间:2018-04-24 01:17:02

标签: maven gradle

我有一个maven项目A,其中的配置文件为:

<properties>
<bigquery.version>0.0.1</bigquery.version>
</properties>
.
.
<profiles>
<profile>
  <id>dev</id>
  <activation></activation>
  <properties>
    <build.version>${bigquery.version}</build.version>
  </properties>
</profile>
<profile>
  <id>screwdriver-v3</id>
  <activation>
    <activeByDefault>true</activeByDefault>
    <property>
      <name>screwdriver3</name>
    </property>
  </activation>
  <properties>
    <buildtype>release</buildtype>
    <build.version>${bigquery.version}.${maven.build.timestamp}</build.version>
  </properties>
</profile>

我在0.0.1.20180424-0042

创建了A版本

我有另一个gradle项目B,我想将A添加为依赖项:

compile group:'com.bq', name:'bigquery', version:'0.0.1.20180424-0042'

当我使用./gradlew clean build构建gradle时,它抱怨为:

Could not resolve all files for configuration ':compileClasspath'.
> Could not resolve com.bq:bigquery:0.0.1.20180424-0042.
Required by:
  project :
> Could not resolve com.bq:bigquery:0.0.1.20180424-0042.
  > inconsistent module metadata found. Descriptor: com.bq:bigquery:0.0.1.${maven.build.timestamp} Errors: bad version: expected='0.0.1.20180424-0042' found='0.0.1.${maven.build.timestamp}'

如何修复依赖?

2 个答案:

答案 0 :(得分:0)

当maven创建版本时,它会在最后添加时间戳,例如在nexus中我正在检查你是否有一个版本为0.0.3-SNAPSHOT但是jar为0.0.3-20161026.145419-3的工件,所以最可能的是什么你需要改变的是: compile group:'com.bq', name:'bigquery', version:'0.0.1.20180424-0042' - &gt; compile group:'com.bq', name:'bigquery', version:'0.0.1'

注意:在pom.xml文件中,您还有0.0.1

答案 1 :(得分:0)

使用像这样的maven配置文件被视为反模式,进一步阅读here

Gradle没有完全支持maven配置文件激活。阅读博文here,了解两个支持的配置文件激活触发器是

  
      
  • 默认情况下处于活动状态的配置文件(适用于Gradle 1.12及更高版本)
  •   
  • 缺少系统属性时可用的配置文件(Gradle 2.0及更高版本可用)
  •   

作为解决方法,您可以执行以下操作:

  1. 将本地文件夹用作被黑客入侵的maven存储库
  2. 首先订购本地文件夹存储库,使其优先于远程存储库
  3. 复制/粘贴/调整本地文件仓库中的pom,以便硬编码版本
  4. 不要将工件(例如jar)复制到本地文件夹存储库
  5. 然后gradle应从本地仓库获取pom,从远程仓库获取jar等

    例如:

    repositories {
        maven {
            url = file('local-repo')
        }
        mavenCentral()
    }
    

    然后你会调整&#34;调整&#34; pom at

    $projectDir/local-repo/$group.replace('.','/')/$artifact/$version/$artifactId-$version.pom