2011-06-24 18 views
66

sbt run पर मेरे पास मुख्य वर्ग के कई विकल्प हैं।निर्माण में मुख्य वर्ग कैसे सेट करें?

मैं एक मुख्य वर्ग तो मैं build.sbt में लिखा गया है स्थापित करने के लिए करना चाहते हैं:

mainClass := Some("aMainClass") 

लेकिन एसबीटी के साथ विफल:

build.sbt:1: error: not found: value aMainClass 

मैं भी project/Project.scala फ़ाइल के साथ की कोशिश की है:

import sbt._ 
    class ExecutableProject(info: ProjectInfo) extends DefaultProject(info) { 
    override def mainClass = Some("aMainClass") 
} 

त्रुटि:

project/Project.scala:3: not found: type aMainClass 

बिल्ड में मुख्य कक्षा को कैसे सेट करें?

उत्तर

22

जहाँ तक मुझे पता है, sbt आपकी परियोजना के भीतर पूरी तरह से योग्य क्लास/ऑब्जेक्ट नाम की अपेक्षा करता है। उदाहरण के लिए, अपने मुख्य वर्ग इस तरह है यदि:

package prog 

object Main extends App { 
    // Hic sunt dracones 
} 

तो आप इस तरह अपने मुख्य वर्ग देने के लिए होगा:

mainClass := Some("prog.Main") 

आप एक प्रकार त्रुटि मिलती है क्योंकि उस प्रकार बस नहीं मिला है।

+14

एसबीटी 0.11.2 का उपयोग करते हुए मैंने पाया मैं संकलन और रनटाइम कार्यक्षेत्रों में मुख्य वर्ग स्थापित करने के लिए किया था: '(संकलित, रन) में mainClass: कुछ (" prog.Main ")' इसी तरह = –

90

मुख्य वर्ग पैकेज के साथ पूरी तरह से योग्य होना चाहिए:

mainClass in Compile := Some("myPackage.aMainClass") 

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

mainClass in (Compile, run) := Some("myPackage.aMainClass") 

mainClass in (Compile, packageBin) := Some("myPackage.anotherMainClass") 

नोट:

mainClass := Some("myPackage.aMainClass") 

कुछ नहीं करता है। यदि आप इसे अपनी बिल्ड फ़ाइल में डालते हैं तो आपको कोई चेतावनी नहीं मिलेगी कि यह कुछ भी नहीं करता है।

+1

ध्यान दें कि ' मुख्य क्लास रन में: = कुछ ("myPackage.aMainClass") 'कुछ भी नहीं करता है। – tksfz

संबंधित मुद्दे