इंटेलीज आइडिया के साथ एसबीटी प्रोजेक्ट कैसे बनाएं?


146

मैं अभी Scala / LiftWeb / Sbt के विकास के साथ शुरू हुआ, और मैं IntelliJ Idea में एक Sbt प्रोजेक्ट आयात करना चाहता हूं। दरअसल, मैं अपनी परियोजना को दो अलग-अलग तरीकों से आयात करने में कामयाब रहा:

1) मावेन के साथ। मैंने एक Maven प्रोजेक्ट बनाया, और उसके ऊपर मैंने एक Sbt प्रोजेक्ट बनाया, जिसे मैंने IntelliJ में आयात किया। मैं फिर आसानी से शुरू कर सकता हूं, जेट्टी सर्वर बंद कर सकता हूं, और अन्य सामान कर सकता हूं। लेकिन ऐसा मैं नहीं चाहता। मैं एक ही सामान करना चाहता हूं, बस मावेन-मुक्त। यही मुझे आगे ले जाता है

2) ग्रहण के साथ। इसलिए, मैंने एक नया Sbt प्रोजेक्ट बनाया (थोड़ी सी स्क्रिप्ट के साथ, मैंने Sbt प्रोजेक्ट को एक वेबप्रोजेक्ट के रूप में कॉन्फ़िगर किया है)। मैंने तब ग्रहण के लिए sbt-eclipsify प्लगइन को प्रोजेक्ट में परिवर्तित करने के लिए उपयोग किया था, जिसे मैंने IntelliJ (मौजूदा स्रोत -> ग्रहण) में आयात किया था। लेकिन यहां समस्याएं शुरू हुईं: मुझे काम करने के लिए इंटेलीज एसबीटी प्लगइन नहीं मिल सकता है।

क्या कोई मुझे इस बारे में सहायता कर सकता है?


किसी ऐसे व्यक्ति के लिए जिसे त्वरित उत्तर की आवश्यकता है या यदि इसकी तत्काल आवश्यकता है, तो बस जीथब पर जाएं और एक साधारण स्कैला प्रोजेक्ट ढूंढें। डाउनलोड करें और फिर अपने आईडीई में आयात करें। आपको स्कैला प्रोजेक्ट तक पहुंचने में सक्षम होना चाहिए। शुभ समय
एक उपयोगकर्ता

जवाबों:


170

प्रोजेक्ट बनाने के तीन मूल तरीके हैं - IntelliJ के आधुनिक संस्करण sbt प्रोजेक्ट को बॉक्स से बाहर आयात कर सकते हैं, अन्यथा आप IntelliJ प्रोजेक्ट जेनरेट करने के लिए sbt प्लगइन का उपयोग कर सकते हैं, या sbb प्रोजेक्ट बनाने के लिए IntelliJ Scala प्लगइन का उपयोग कर सकते हैं। बुनियादी सुविधाएँ दोनों समाधानों का उपयोग करके बॉक्स से बाहर काम करती हैं, कुछ जटिल बिल्ड में समस्याएं हो सकती हैं, इसलिए यह देखने के लिए अन्य टूल आज़माएं कि क्या यह वहां काम करता है।

इंटेलीजे

इंटेलीज आईडिया इन दिनों बहुत बेहतर हो गया है। वर्तमान संस्करण (14.0.2) Scala प्लगइन के साथ बॉक्स से बाहर sbt परियोजनाओं का समर्थन करता है। बस प्लगइन स्थापित करें और आप बिना किसी परेशानी के स्काला / एसबीटी परियोजनाओं को खोलने में सक्षम होना चाहिए।

वरीयताओं में प्लगइन्स के तहत स्काला प्लगइन

प्लगइन के साथ, बस एक sbt प्रोजेक्ट पर इंगित करें और IDEA आपको इस तरह के प्रोजेक्ट को खोलने के लिए एक विज़ार्ड देने जा रहा है।

आयात sbt परियोजना

इंटेलीज स्काला प्लगिन

IntelliJ प्लगइन यहाँ पाया जा सकता है http://confluence.jetbrains.com/display/SCA/Scala+Plugin+for+IntelliJ+IDEA या IDE के भीतर से सेटिंग्स> प्लगइन्स संवाद का उपयोग करते हुए डायरेक्टोली स्थापित की जा सकती है। बाद में कोई भी फाइल कर सकता है -> नया प्रोजेक्ट -> स्काला -> एसबीटी आधारित। IntelliJ बेसिक बिल्ड.sbt जेनरेट करेगा, आवश्यक निर्भरताएँ और ओपन प्रोजेक्ट डाउनलोड करेगा।

एसबीटी प्लगिन

Sbt प्लगइन जो sbt फ़ाइलों के आधार पर एक विचार परियोजना उत्पन्न करता है, वह यहाँ पाया जा सकता है: https://github.com/mpeltonen/sbt-idea

SBT 12.0+ और 13.0+

बस addSbtPlugin("com.github.mpeltonen" % "sbt-idea" % "1.5.2")अपने को जोड़ें build.sbt; किसी अतिरिक्त रिसोल्वर की आवश्यकता नहीं है।

पुराने संस्करण:

SBT 0.11+

~/.sbt/plugins/build.sbtOR को निम्न पंक्तियाँ बनाएँ और जोड़ेंPROJECT_DIR/project/plugins.sbt

resolvers += "sbt-idea-repo" at "http://mpeltonen.github.com/maven/"

addSbtPlugin("com.github.mpeltonen" % "sbt-idea" % "1.6.0")

gen-ideaIDEA प्रोजेक्ट फाइल बनाने के लिए sbt में उपयोग करें ।

डिफ़ॉल्ट रूप से, sbt और लाइब्रेरी निर्भरता के क्लासिफायर (अर्थात स्रोत और javadocs) लोड किए जाते हैं यदि IDEA प्रोजेक्ट फ़ाइलों में पाया और संदर्भ दिया जाता है। यदि आप उन्हें डाउनलोड / संदर्भ नहीं करना चाहते हैं, तो कमांड का उपयोग करें gen-idea no-classifiers no-sbt-classifiers


SBT 0.10.1 (प्लगइन लेखक के अनुसार, 0.10.0 काम नहीं करेगा !)

निम्नलिखित पंक्तियों को ~ / .sbt / plugins / build.sbt में बनाएँ और जोड़ें:

resolvers += "sbt-idea-repo" at "http://mpeltonen.github.com/maven/"

libraryDependencies += "com.github.mpeltonen" %% "sbt-idea" % "0.10.0"

gen-ideaIDEA प्रोजेक्ट फाइल बनाने के लिए sbt टास्क का उपयोग करें ।

डिफ़ॉल्ट रूप से, sbt और लाइब्रेरी निर्भरता के क्लासिफायर (अर्थात स्रोत और javadocs) लोड किए जाते हैं यदि IDEA प्रोजेक्ट फ़ाइलों में पाया और संदर्भ दिया जाता है। यदि आप उन्हें डाउनलोड / संदर्भ नहीं करना चाहते हैं, तो कमांड का उपयोग करें gen-idea no-classifiers no-sbt-classifiers


SBT 0.7

इसका उपयोग करने के लिए, बस इसे अपने sbt शेल से चलाएं, यह एक बाहरी प्रोग्राम के रूप में प्लगइन का उपयोग करेगा:

 > *sbtIdeaRepo at http://mpeltonen.github.com/maven/
 > *idea is com.github.mpeltonen sbt-idea-processor 0.4.0
 ...
 > update
 ...
 > idea
 ...

आप अपनी परियोजना परिभाषा में विशेषता भी जोड़ सकते हैं, जैसा आप चाहते हैं:

import sbt._
class MyProject(info: ProjectInfo) extends ParentProject(info) with IdeaProject {
  lazy val mySubProject = project("my-subproject", "my-subproject", new DefaultProject(_) with IdeaProject)
   // ...
}

4
मैं इस प्लगइन में कुल परिवर्तित कर रहा हूँ। विचार-एसबीटी-प्लगइन के साथ संयोजन में इसका उपयोग करें, जो आपको एसबीटी के लिए अपनी परियोजना का निर्माण करने की अनुमति देता है, और आईडीईए में एक टूल विंडो से एसबीटी को अंतःक्रियात्मक रूप से उपयोग करता है। संस्करण 0.2.0-SNAPSHOT ऑफ sbt-idea कुछ कम झुंझलाहट को ठीक करता है - एक मूल परियोजना का निर्माण, और मैनुअल इंटेलीज कॉन्फ़िगरेशन का संरक्षण।
retronym

इस प्लगइन के लिए धन्यवाद। यह वास्तव में मददगार है!
ksemeks

4
मैं अपना जवाब वापस लेता हूं। यह एक बेहतरीन प्लगइन है और मैं अब हर बार इसका उपयोग करता हूं।
सियासियो

1
मैंने SBT 0.10.0 के लिए एक उत्तर जोड़ा, जो SBT 0.7.x + stackoverflow.com/questions/4250318/… के
opyate

धन्यवाद opyate, मैंने आपकी टिप्पणी के अनुसार मेरी पोस्ट अपडेट की है
स्टीव

11

अभी के लिए मैं इसे हाथ से करता हूं। यह काफी सरल है।

  1. SBT के साथ प्रोजेक्ट बनाएं
  2. एक ही रूट पथ के साथ एक नया IDEA प्रोजेक्ट बनाएँ
  3. समान रूट पथ के साथ एक मॉड्यूल बनाएं
  4. मॉड्यूल पर src पथ के रूप में src / main / scala सेट करें
  5. मॉड्यूल पर परीक्षण पथ के रूप में src / test / scala सेट करें
  6. एक पुस्तकालय के रूप में scala-Library.jar जोड़ें
  7. एक मॉड्यूल लाइब्रेरी के भीतर जार निर्देशिका के रूप में lib जोड़ें (यदि यह मौजूद है)
  8. एक मॉड्यूल लाइब्रेरी के भीतर जार निर्देशिका के रूप में lib_managed / संकलन (यदि यह मौजूद है) जोड़ें
  9. एक मॉड्यूल लाइब्रेरी के भीतर जार निर्देशिका के रूप में lib_managed / परीक्षण (यदि यह मौजूद है) जोड़ें

यह स्मृति से है। यह बेहतर होगा अगर इसे स्वचालित किया गया था, लेकिन यह अब कोई बड़ी बात नहीं है।

सावधानी का एक नोट: उपरोक्त दृष्टिकोण नए-स्कूल sbt के साथ अच्छी तरह से काम नहीं करता है, अर्थात संस्करण 0.10 और नए, क्योंकि यह डिफ़ॉल्ट रूप से lib_managed में निर्भरता की प्रतिलिपि नहीं बनाता है। आप जोड़ सकते हो

retrieveManaged := true

अपने build.sbt के लिए यह lib_managed में निर्भरता की प्रतिलिपि बनाने के लिए।


लेकिन, क्या आप अपना प्रोजेक्ट (जेटी) इंटेलीजे से या किसी टर्मिनल से शुरू करते हैं? मैं IDE से प्रोजेक्ट लॉन्चर / कंपाइलर सेट नहीं कर सकता।
ksemeks 4

एक और बात: मैंने वह सब कुछ किया जो आपने लिखा था, लेकिन IntelliJ आयात "आयात net.liftweb.LiftRules" के लिए "प्रतीक ne हल नहीं कर सकता" कह रहा है
ksemeks

मैं आयात करने में कामयाब रहा। मुझे / lib_managed के बजाय / lib_managed / संकलन आयात करना था
ksemeks 4

6
जवाब मुकर गया! Sbt-idea plugin का उपयोग करें।
सायेंसो

7

Tempus fugit और IntelliJ IDEA इन दिनों इतनी बेहतर हो गई है। यह सब के बाद 2015 है, है ना?

कहा जा रहा है कि, IntelliJ IDEA 14.0.2 का नवीनतम संस्करण Scala प्लगइन के साथ बॉक्स से बाहर sbt परियोजनाओं का समर्थन करता है । बस प्लगइन स्थापित करें और आप बहुत परेशानियों के बिना स्काला / एसबीटी परियोजनाओं को खोलने में सक्षम होना चाहिए।

वरीयताओं में प्लगइन्स के तहत स्काला प्लगइन

मैं प्लगइन के अर्ली एक्सेस संस्करण का उपयोग कर रहा हूं जो कि लेखन के समय के रूप में 1.2.67.6.EAP है।

प्लगइन के साथ बस एक sbt प्रोजेक्ट पर इंगित करें और IDEA आपको इस तरह के प्रोजेक्ट को खोलने के लिए एक विज़ार्ड देने जा रहा है।

आयात sbt परियोजना

Sbt 0.12.4 में sbt-idea के बारे में

Sbt 0.12.4 के लिए सिस्टम-वाइड प्लगइन कॉन्फ़िगरेशन फ़ाइल - ~/.sbt/plugins/build.sbtया PROJECT_DIR/project/plugins.sbt- में निम्न पंक्तियाँ होनी चाहिए:

resolvers += "Sonatype snapshots" at "http://oss.sonatype.org/content/repositories/snapshots/"

addSbtPlugin(dependency="com.github.mpeltonen" % "sbt-idea" % "1.5.0-SNAPSHOT")

sbt gen-ideaIDEA प्रोजेक्ट फ़ाइल जनरेट करने के लिए चलाएँ ।

अधिक जानकारी के लिए sbt-idea plugin वेबसाइट पढ़ें । तुम भी मेरे ब्लॉग प्रविष्टि IntelliJ IDEA 13 (sbt-idea, Scala 2.11 और sbt 0.12 के साथ) में sbt- आधारित परियोजना आयात कर सकते हैं ।


नया प्रोजेक्ट बनाते समय। Sbt gen-idea के बाद प्रोजेक्ट खाली है। कोई संरचना, src नहीं, परीक्षण फ़ोल्डर। और यह लंगड़ा है ..
ses

आपने प्रोजेक्ट कैसे बनाया? निर्देशिका संरचना और फ़ाइलों के अंदर क्या है?
जसक लाकॉस्की

यह सिर्फ खाली है। मुझे इसे हाथों से "मेन / स्केला / src" क्रेट करना था। लेकिन मैं इसके साथ रह सकता हूँ।
Ses

आप sbt प्रोजेक्ट को बूटस्ट्रैप करने के साधन के रूप में github.com/n8han/giter8 का उपयोग करना चाह सकते हैं । sbt के पास मुख्य परियोजना के रूप में एक खाली निर्देशिका हो सकती है और मुख्य / scala / src की आवश्यकता नहीं है - बस उन्हें लेने के लिए sbt के लिए मुख्य निर्देशिका में अपनी स्काला फ़ाइलों को रखें।
जेसेक लाकोव्स्की

5

Sbt के लिए 0.7

इस पृष्ठ पर कहीं और उत्तर देखें ।

Sbt 0.10 के लिए

क्लोन और इस्माइल के sbt-idea का निर्माण:

git clone https://github.com/ijuma/sbt-idea.git
cd sbt-idea
git checkout sbt-0.10
./sbt package

यदि आपके पास पहले से कोई नहीं है, तो sbt plugin lib directory बनाएँ

mkdir -p  ~/.sbt/plugins/lib

यहां चरण एक में निर्मित जार की प्रतिलिपि बनाएँ

cp sbt-idea/target/scala-2.8.1.final/*.jar ~/.sbt/plugins/lib

पुनरारंभ करें या sbt को पुनः लोड करें, फिर आप चला सकते हैं gen-idea(या gen-idea with-classifiersयदि आप intelliJ में स्रोत और javadoc चाहते हैं)

स्रोत: संदेश समूह पर टैकर्स का सुझाव

IntelliJ IDEA 13.x में ही

आप आजकल आईडीए में एक एसबीटी-आधारित परियोजना खोल सकते हैं। जब भी आप निर्माण स्क्रिप्ट में बदलाव करते हैं, यह आवश्यक प्रोजेक्ट और मॉड्यूल बनाएगा, और आपकी निर्भरता को अद्यतित रखेगा।


2

मैं बस इस सारे दर्द से गुज़रा। मैं एक स्वीकार्य वातावरण प्राप्त करने की कोशिश में दिन बिताता हूं और इस नतीजे पर पहुंचा हूं कि कुछ समय के लिए ENSIME, SBT और JRebel मेरे विकास का माहौल बनने वाले हैं। हां, यह Emacs पर वापस जा रहा है, लेकिन ENSIME इसे थोड़ा या एक विचार में बदल देता है, जिसमें रिफैक्टरिंग, डिबगिंग सपोर्ट, नेविगेशन आदि शामिल हैं। यह ग्रहण (जावा) जितना अच्छा नहीं है, लेकिन जब तक कि स्कैला प्लगइन्स बेहतर नहीं हो जाता। हमारे पास सबसे अच्छा है।

जब तक स्काला विकास वातावरण सूँघने (ग्रहण या IntelliJ) तक नहीं उठता, मैं परेशान नहीं होने वाला। वे अभी भी बहुत छोटी गाड़ी है।

लिफ्ट साइट पर चर्चा देखें।

http://groups.google.com/group/liftweb/browse_thread/thread/6e38ae7396575052#

उस थ्रेड के भीतर, इंटेलीज के लिए एक HOWTO का लिंक है, लेकिन यद्यपि यह काम करता है, ऐसे कई मुद्दे हैं जो इसे कम उपयोगी मानते हैं।

http://blog.morroni.com/2010/07/14/setup-intellij-9-for-lift-framework-development/comment-page-1/


मैं पहले से ही इसे पढ़ता हूं। इस लेख में मावेन का उपयोग किया गया है, जिसे मैं काम में लाने में कामयाब रहा। मैं अब ऐसा ही करने की कोशिश कर रहा हूं, बस sbt के साथ, मैवेन को हटा देना चाहिए।
ksemeks

मैं इसका उपयोग करने के लिए IntelliJ के लिए परियोजना स्थापित कर सकता हूं, लेकिन sbt संकलक / लांचर को काम करने के लिए नहीं मिल सकता।
ksemeks

जहाँ तक ENSIME का सवाल है: क्या काम करना आसान है? मैंने एक बार कोशिश की, लेकिन मैंने कभी भी एमाक्स के साथ काम नहीं किया, इसलिए यह मेरे लिए थोड़ा कठिन था। Emacs एक आधार के साथ काम कर रहा है?
ksemeks

निम्न लिंक आपको एसबीटी सेटअप के माध्यम से ले जाएगा। यह मेरे लिए काम करता है, लेकिन फिर से गैर-एकीकृत फैशन में एसबीटी और इंटेलीजे के साथ काम करना वास्तव में दो अलग-अलग साधनों का उपयोग करने जैसा है, जो एसबीटी के साथ ENSIME बहुत अधिक प्राकृतिक है। heikoseeberger.blogspot.com/2010/08/…
andyczerwonka

2

उत्तर 2014 के लिए पुराने हैं। IntelliJ 13.x में , प्लगइन Scala को 0.41.2 है (SBT शामिल है)।

मेरे एसबीटी संस्करण 0.13.5 है (टर्मिनल: sbt sbtVersion)

प्रोजेक्ट के रूट फ़ोल्डर में जाएं और टर्मिनल में प्रवेश करें

sbt idea

आपको दो नए छिपे हुए फ़ोल्डर दिखाई देंगे .idea और .idea_modules

फिर IntelliJ में, फ़ाइल> ओपन> प्रोजेक्ट चुनें। यह बिना किसी समस्या के परियोजना को खोलना चाहिए।


0

अपना SBT प्रोजेक्ट बनाना शुरू करने से पहले, सुनिश्चित करें कि Scala प्लगइन डाउनलोड और IntelliJ IDEA में सक्षम है।

नीचे दिया गया लिंक आपको वह सब कुछ बताता है जो आपको जानना चाहिए।

https://www.jetbrains.com/help/idea/2016.1/getting-started-with-sbt.html

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.