2012-02-25 21 views
10

あなたが知っているように、SBTの新しいバージョン(0.11)は、プロジェクトディレクトリ内の完全な依存関係をコピーするのではなく、~/.ivy2/cacheに共通ライブラリキャッシュを維持するように設計されています。しかし、IntelliJ Idea(私はIdeaプロジェクトを生成するためにSBTプラグインを使用しています)は、デフォルトでは共通のキャッシュを無視しているだけで、ライブラリはプロジェクトディレクトリの下に置かれているようです(SBTを設定する必要があります)。これを修正するには?ローカルIvy2キャッシュを認識するためにIntelliJ Idea Scalaプロジェクトを設定するにはどうすればよいですか?

アイデアのプラグインリポジトリにはいくつかのIvyプラグインがありますが、そのうちのどれが問題を解決できるかわかりません(ただし、依存関係を管理してライブラリをダウンロードしたくないそれはSBTによって行われるので)、キャッシュ内のクラスを探すだけです)。

答えて

7

sbt-ideaは、sbtが参照する場所のライブラリを指します。デフォルトでは~/.ivy2/cacheです。ここで

は、それが新鮮なプロジェクトで、私のシステム上でどのように見えるかSBT 0.11.2だし、SBT-アイデア0.11.0:

~/code/scratch/20120225 sbt 
[info] Loading global plugins from /Users/jason/.sbt/plugins 
[info] Set current project to default-d73535 (in build file:/Users/jason/code/scratch/20120225/) 

> set libraryDependencies += "org.scalaz" %% "scalaz-core" % "6.0.3" 
[info] Reapplying settings... 
[info] Set current project to default-d73535 (in build file:/Users/jason/code/scratch/20120225/) 

> session save 
[info] Reapplying settings... 
[info] Set current project to default-d73535 (in build file:/Users/jason/code/scratch/20120225/) 

> gen-idea no-sbt-classifiers 
[info] Trying to create an Idea module default-d73535 
[info] Resolving org.scala-lang#scala-library;2.9.1 ... 
[info] Resolving org.scalaz#scalaz-core_2.9.1;6.0.3 ... 
[info] Excluding folder target 
[info] Created /Users/jason/code/scratch/20120225/.idea/IdeaProject.iml 
[info] Created /Users/jason/code/scratch/20120225/.idea 
[info] Excluding folder /Users/jason/code/scratch/20120225/target 
[info] Created /Users/jason/code/scratch/20120225/.idea_modules/default-d73535.iml 
[info] Created /Users/jason/code/scratch/20120225/.idea_modules/project.iml 

    ~/code/scratch/20120225 grep jar /Users/jason/code/scratch/20120225/.idea/libraries/*.xml 
/Users/jason/code/scratch/20120225/.idea/libraries/org_scala_lang_scala_library_2_9_1.xml:  <root url="jar://$USER_HOME$/.sbt/boot/scala-2.9.1/lib/scala-library.jar!/"></root> 
/Users/jason/code/scratch/20120225/.idea/libraries/org_scala_lang_scala_library_2_9_1.xml:  <root url="jar://$USER_HOME$/.ivy2/cache/org.scala-lang/scala-library/docs/scala-library-2.9.1-javadoc.jar!/"></root> 
/Users/jason/code/scratch/20120225/.idea/libraries/org_scala_lang_scala_library_2_9_1.xml:  <root url="jar://$USER_HOME$/.ivy2/cache/org.scala-lang/scala-library/srcs/scala-library-2.9.1-sources.jar!/"></root> 
/Users/jason/code/scratch/20120225/.idea/libraries/org_scalaz_scalaz_core_2_9_1_6_0_3.xml:  <root url="jar://$USER_HOME$/.ivy2/cache/org.scalaz/scalaz-core_2.9.1/jars/scalaz-core_2.9.1-6.0.3.jar!/"></root> 
/Users/jason/code/scratch/20120225/.idea/libraries/org_scalaz_scalaz_core_2_9_1_6_0_3.xml:  <root url="jar://$USER_HOME$/.ivy2/cache/org.scalaz/scalaz-core_2.9.1/docs/scalaz-core_2.9.1-6.0.3-javadoc.jar!/"></root> 
/Users/jason/code/scratch/20120225/.idea/libraries/org_scalaz_scalaz_core_2_9_1_6_0_3.xml:  <root url="jar://$USER_HOME$/.ivy2/cache/org.scalaz/scalaz-core_2.9.1/srcs/scalaz-core_2.9.1-6.0.3-sources.jar!/"></root> 
/Users/jason/code/scratch/20120225/.idea/libraries/scala_2_9_1.xml:  <root url="jar://$USER_HOME$/.sbt/boot/scala-2.9.1/lib/scala-library.jar!/"></root> 
/Users/jason/code/scratch/20120225/.idea/libraries/scala_2_9_1.xml:  <root url="jar://$USER_HOME$/.sbt/boot/scala-2.9.1/lib/scala-compiler.jar!/"></root> 

しかし、SBTが作る使用する構成設定、retrieve-managedを持っていますキャッシュから直接参照するのではなく、すべてのライブラリのビルドローカルコピー。これを有効にしている場合は、sbt-ideaもIntelliJクラスパスを参照するように設定されます。ここで

は助けます:

> help retrieve-managed 

If true, enables retrieving dependencies to the current build. Otherwise, dependencies are used directly from the cache. 

のは、それを試してみましょう:

> set retrieveManaged in ThisBuild := true 
[info] Reapplying settings... 
[info] Set current project to default-d73535 (in build file:/Users/jason/code/scratch/20120225/) 
> update 
[info] Updating {file:/Users/jason/code/scratch/20120225/}default-d73535... 
[info] Resolving org.scala-lang#scala-library;2.9.1 ... 
[info] Resolving org.scalaz#scalaz-core_2.9.1;6.0.3 ... 
[info] Done updating. 
[success] Total time: 1 s, completed Feb 25, 2012 9:07:41 AM 
> show compile:dependency-classpath 
[info] Updating {file:/Users/jason/code/scratch/20120225/}default-d73535... 
[info] Resolving org.scala-lang#scala-library;2.9.1 ... 
[info] Resolving org.scalaz#scalaz-core_2.9.1;6.0.3 ... 
[info] Done updating. 
[info] ArrayBuffer(Attributed(/Users/jason/.sbt/boot/scala-2.9.1/lib/scala-library.jar), Attributed(/Users/jason/code/scratch/20120225/lib_managed/jars/org.scalaz/scalaz-core_2.9.1/scalaz-core_2.9.1-6.0.3.jar)) 
[success] Total time: 0 s, completed Feb 25, 2012 9:07:54 AM 


> gen-idea no-sbt-classifiers 
[info] Trying to create an Idea module default-d73535 
[info] Resolving org.scala-lang#scala-library;2.9.1 ... 
[info] Resolving org.scalaz#scalaz-core_2.9.1;6.0.3 ... 
[info] Excluding folder target 
[info] Created /Users/jason/code/scratch/20120225/.idea/IdeaProject.iml 
[info] Created /Users/jason/code/scratch/20120225/.idea 
[info] Excluding folder /Users/jason/code/scratch/20120225/target 
[info] Created /Users/jason/code/scratch/20120225/.idea_modules/default-d73535.iml 
[info] Created /Users/jason/code/scratch/20120225/.idea_modules/project.iml 

~/code/scratch/20120225 grep jar /Users/jason/code/scratch/20120225/.idea/libraries/*.xml 
/Users/jason/code/scratch/20120225/.idea/libraries/org_scala_lang_scala_library_2_9_1.xml:  <root url="jar://$USER_HOME$/.sbt/boot/scala-2.9.1/lib/scala-library.jar!/"></root> 
/Users/jason/code/scratch/20120225/.idea/libraries/org_scala_lang_scala_library_2_9_1.xml:  <root url="jar://$PROJECT_DIR$/lib_managed/docs/org.scala-lang/scala-library/scala-library-2.9.1-javadoc.jar!/"></root> 
/Users/jason/code/scratch/20120225/.idea/libraries/org_scala_lang_scala_library_2_9_1.xml:  <root url="jar://$PROJECT_DIR$/lib_managed/srcs/org.scala-lang/scala-library/scala-library-2.9.1-sources.jar!/"></root> 
/Users/jason/code/scratch/20120225/.idea/libraries/org_scalaz_scalaz_core_2_9_1_6_0_3.xml:  <root url="jar://$PROJECT_DIR$/lib_managed/jars/org.scalaz/scalaz-core_2.9.1/scalaz-core_2.9.1-6.0.3.jar!/"></root> 
/Users/jason/code/scratch/20120225/.idea/libraries/org_scalaz_scalaz_core_2_9_1_6_0_3.xml:  <root url="jar://$PROJECT_DIR$/lib_managed/docs/org.scalaz/scalaz-core_2.9.1/scalaz-core_2.9.1-6.0.3-javadoc.jar!/"></root> 
/Users/jason/code/scratch/20120225/.idea/libraries/org_scalaz_scalaz_core_2_9_1_6_0_3.xml:  <root url="jar://$PROJECT_DIR$/lib_managed/srcs/org.scalaz/scalaz-core_2.9.1/scalaz-core_2.9.1-6.0.3-sources.jar!/"></root> 
/Users/jason/code/scratch/20120225/.idea/libraries/scala_2_9_1.xml:  <root url="jar://$USER_HOME$/.sbt/boot/scala-2.9.1/lib/scala-library.jar!/"></root> 
/Users/jason/code/scratch/20120225/.idea/libraries/scala_2_9_1.xml:  <root url="jar://$USER_HOME$/.sbt/boot/scala-2.9.1/lib/scala-compiler.jar!/"></root> 
+0

主要+1、同じは、Eclipseに適用されるか、これだけのIntelliJのですか? – virtualeyes

+0

'no-sbt-classifiers'は何をしますか? –

+0

私は実際にすべての作業を行うためにretrieve-managedを使用しています。私がそれを避けようとした最後の時間は、アイデアがライブラリを見ているという問題につながります。それはIdea 10でしたが、おそらく11で修正されました... – Ivan

関連する問題