Creating a jar file from a Scala file

前端 未结 9 2050
忘掉有多难
忘掉有多难 2020-12-02 04:56

I\'m new to Scala and don\'t know Java. I want to create a jar file out of a simple Scala file. So I have my HelloWorld.scala, generate a HelloWorld.jar.

Manifest.m

9条回答
  •  北海茫月
    2020-12-02 05:35

    If you do not wish to use sbt facilities I recommend the use of a makefile.

    Here is an example where foo package is replaced by foo.bar.myApp for completeness.

    makefile

    NAME=HelloWorld
    JARNAME=helloworld
    
    PACKAGE=foo.bar.myApp
    PATHPACK=$(subst .,/,$(PACKAGE))
    
    .DUMMY: default
    default: $(NAME)
    
    .DUMMY: help
    help:
        @echo "make [$(NAME)]"
        @echo "make [jar|runJar]"
        @echo "make [clean|distClean|cleanAllJars|cleanScalaJar|cleanAppJar]"
    
    .PRECIOUS: bin/$(PATHPACK)/%.class
    
    bin/$(PATHPACK)/%.class: src/$(PATHPACK)/%.scala
        scalac -sourcepath src -d bin $<
    
    scala-library.jar:
        cp $(SCALA_HOME)/lib/scala-library.jar .
    
    .DUMMY: runjar
    runJar: jar
        java -jar $(JARNAME).jar
    
    .DUMMY: jar
    jar: $(JARNAME).jar
    
    MANIFEST.MF:
        @echo "Main-Class: $(PACKAGE).$(NAME)" > $@
        @echo "Class-Path: scala-library.jar" >> $@
    
    $(JARNAME).jar: scala-library.jar bin/$(PATHPACK)/$(NAME).class \
                                    MANIFEST.MF
        (cd bin && jar -cfm ../$(JARNAME).jar ../MANIFEST.MF *)
    
    %: bin/$(PATHPACK)/%.class
        scala -cp bin $(PACKAGE).$@
    
    .DUMMY: clean
    clean:
        rm -R -f bin/* MANIFEST.MF
    
    cleanAppJar:
        rm -f $(JARNAME).jar
    
    cleanScalaJar:
        rm -f scala-library.jar
    
    cleanAllJars: cleanAppJar cleanScalaJar
    
    distClean cleanDist: clean cleanAllJars
    

提交回复
热议问题