• 像VS一样简单的打包“控制台”程序


    对于我一个不了解JAVA,没有相关生态圈的C#er, 自己要研究Scala真是困难重重,尤其在项目构建上真是感觉半瓶子醋难以入门。

    一个VS控制台程序,build之后甚至不需要了解 ms build就能简单的提取一个debug/release文件夹,放到服务器上跑一下。在做简单的测试程序时这是常用手段。

    轮到Scala了,发现JAVA玩的那一套思路完全不同,Classpath到底是怎么回事我不懂,配置文件到底要怎么弄不知道。难道不是放在同一个文件夹下就行么?...试了各种手段,倒是能运行,但操作过程繁琐。

    sbt自带的package指令,默认只会把src中源代码打包,dependencies jar全然不顾。当然肯定能配置但我不会。

    另外build.sbt里写上 exportJars := true 会导出所有依赖包,实在没办法了倒是可以一个个加进去。

    mappings in (Compile, packageBin) += {
      (baseDirectory.value / "example.txt") -> "out/example.txt"
    }

    以上代码能控制文件输出,以后可能有用

    最终选择了一个插件:sbt-pack。 Stackoverflow上提到的还是蛮频繁的,类似的还有sbt-assembly,但前者是把所有jar放到一个lib下,在Windows平台还能生成bat文件方便执行,而后者则是打到一个"Fat Jar"中(又学了个词)...

    https://github.com/xerial/sbt-pack

    github官方地址

    在plugin.sbt中增加 

    addSbtPlugin("org.xerial.sbt" % "sbt-pack" % "0.7.9")

    因为我的sbt是 0.13.x

    在根目录运行sbt pack 即可以看到结果。但过程中曾经多次提示没有pack指令,难道是我忘了重启cmd?经测试发现必须在build.sbt中加上 

    packAutoSettings

    不明所以,入门之后再研究吧

    遇到一个错误,少打了一个包,发现那个包写成如下形式了:

    libraryDependencies += "com.typesafe.akka" % "akka-actor_2.11" % "2.4.2" % "provided"

    原来provided代表这个jar会由runtime提供...

    入个门太难了

       
     
  • 相关阅读:
    浏览器内核
    为什么一般请求可以下载文件,Ajax 请求就不能下载
    转 深入理解javascript原型和闭包(10)——this
    node读取文本文件时,去掉BOM
    AMD & CMD
    gulp requirejs Error: ENOENT: no such file or directory, open '/js/require_config.js', 一直报找不到require_config.js,坑死了
    [BZOJ3224]普通平衡树
    [NOIP2014D2]
    [NOIP2014D1]
    [NOIP2013D2]
  • 原文地址:https://www.cnblogs.com/apodemakeles/p/5287253.html
Copyright © 2020-2023  润新知