Scala 提供的依赖项未能提供

Scala 提供的依赖项未能提供,scala,hadoop,gradle,dependency-management,Scala,Hadoop,Gradle,Dependency Management,我有一个非常重要的(Scala中的hadoop抽象层)项目,我正试图使用Gradle构建它 在最新版本中看起来像Hadoop,需要一些变通方法 因此,我对build.gradle脚本进行了如下修补: apply plugin: 'scala' apply plugin: 'idea' configurations { provided } sourceSets { main { compileClasspath += configurations.provided } } rep

我有一个非常重要的(Scala中的hadoop抽象层)项目,我正试图使用Gradle构建它

在最新版本中看起来像Hadoop,需要一些变通方法

因此,我对build.gradle脚本进行了如下修补:

apply plugin: 'scala'
apply plugin: 'idea'
configurations {
    provided
}
sourceSets {
    main { compileClasspath += configurations.provided }
}
repositories {
  mavenLocal()
  mavenCentral()
  maven{
    url 'http://conjars.org/repo/'
    }
}
ext.cascadingVersion = '2.1.6'
ext.hadoopVersion = '1.1.2'
dependencies {
  compile 'org.scala-lang:scala-compiler:2.9.2'
  compile 'org.scala-lang:scala-library:2.9.2'
  compile 'bixo:bixo-core:0.9.1'
  compile 'org.testng:testng:6.8.7'
  testCompile  'org.scala-tools.testing:specs:1.6.2.2_1.5.0'
  compile( 'com.twitter:scalding_2.9.2:0.8.1' )
  compile( group: 'cascading', name: 'cascading-core', version: cascadingVersion )
  compile( group: 'cascading', name: 'cascading-hadoop', version: cascadingVersion )
  provided "org.apache.hadoop:hadoop-client:${hadoopVersion}"
}
jar {
  description = "Assembles a Hadoop-ready JAR file"
  doFirst {
    into( 'lib' ) {
      from configurations.compile
    }
  }
  manifest {
    attributes( "Main-Class": "com.Crawler" )
  }
}
我认为这会解决问题。但在尝试构建时,我始终会遇到以下错误:

[ant:scalac] Element '/Users/tkmafj4/Projects/AIT/Crawler/build/resources/main' does not exist.
[ant:scalac] scala.tools.nsc.symtab.Types$TypeError: class file needed by Source is missing.
[ant:scalac] reference value hadoop of package org.apache refers to nonexisting symbol.
看起来我的配置中缺少了一些东西

如何检查是否正在提取源


什么是正确的编译方法?

hadoop
成为
cascading
的“提供”依赖项意味着依赖
cascading
将不再使用
hadoop
,因为
hadoop
是由目标环境或创建最终可部署归档的人提供的。如果需要将
hadoop
依赖项放入fat Jar中,则需要(至少)将其设置为
运行时
依赖项。但是,由于编译似乎存在一些问题,我会尝试将其设置为
compile
依赖项

如果
hadoop
依赖项应该位于编译类路径上,而不是位于fat Jar中,则需要添加类似
sourceset.main.compileClasspath+=configurations.provided的内容

PS:fat Jar任务需要打包
配置。运行时
而不是
配置。编译
,并且应该删除
doFirst{
行(以及相应的右括号)