Scala 提供的依赖项未能提供
我有一个非常重要的(Scala中的hadoop抽象层)项目,我正试图使用Gradle构建它 在最新版本中看起来像Hadoop,需要一些变通方法 因此,我对build.gradle脚本进行了如下修补: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
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{
行(以及相应的右括号)