免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項超值服

開通VIP
gradle生成可運(yùn)行jar包
        在http://blog.csdn.net/zero__007/article/details/50708166中簡單介紹了使用gradle生成可運(yùn)行jar包,但是在實踐中可能會發(fā)現(xiàn),生成的jar中包含一些不需要的文件,可以采用如下的示例來去除:
  1. apply plugin: 'scala'
  2. apply plugin: 'java'

  3. [compileJava, compileTestJava, javadoc]*.options*.encoding = 'utf-8'
  4. [compileJava, compileTestJava]*.sourceCompatibility = "1.8"
  5. [compileJava, compileTestJava]*.targetCompatibility = "1.8"

  6. ext {
  7. jarName = project.name
  8. mainClassName = 'com.zero.HelloWorld'
  9. finagleVersion = '6.33.0'//注意: ' 與 "
  10. }

  11. repositories {
  12. mavenLocal()
  13. maven { url 'http://maven.oschina.net/content/groups/public/' }
  14. maven { url 'http://uk.maven.org/maven2/' }
  15. maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
  16. maven { url 'https://repo.spring.io/libs-snapshot/' }
  17. mavenCentral()
  18. }

  19. project.configurations {
  20. all*.exclude group: 'log4j', module: 'log4j'
  21. all*.exclude group: 'org.slf4j', module: 'slf4j-log4j12'
  22. }

  23. dependencies {
  24. compile "org.scala-lang:scala-library:2.11.8"
  25. compile "org.scala-lang:scala-compiler:2.11.8"
  26. compile "org.scala-lang:scala-reflect:2.11.8"

  27. //finagle
  28. compile "com.twitter:finagle-core_2.11:${finagleVersion}"
  29. compile "com.twitter:finagle-http_2.11:${finagleVersion}"
  30. compile "com.twitter:finagle-mysql_2.11:${finagleVersion}"
  31. compile "com.twitter:finagle-redis_2.11:${finagleVersion}"

  32. //。。。。。。
  33. }

  34. task "mkdirs" << {
  35. sourceSets*.scala.srcDirs*.each { it.mkdirs() }
  36. sourceSets*.java.srcDirs*.each { it.mkdirs() }
  37. sourceSets*.resources.srcDirs*.each { it.mkdirs() }
  38. }

  39. jar.manifest.attributes 'Main-Class': mainClassName
  40. jar.baseName = jarName

  41. jar {
  42. from {
  43. configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
  44. configurations.runtime.collect { it.isDirectory() ? it : zipTree(it) }
  45. }
  46. exclude('LICENSE.txt', 'NOTICE.txt', 'rootdoc.txt')
  47. exclude 'META-INF/*.RSA', 'META-INF/*.SF', 'META-INF/*.DSA'
  48. exclude 'META-INF/NOTICE', 'META-INF/NOTICE.txt'
  49. exclude 'META-INF/LICENSE', 'META-INF/LICENSE.txt'
  50. exclude 'META-INF/DEPENDENCIES'
  51. }

  52. // important(把java與scala的源代碼目錄全映射到scala上,
  53. // 這樣gradle compileScala時就能同時編譯java與scala的源代碼)
  54. sourceSets {
  55. main {
  56. scala {
  57. srcDirs = ['src/main/scala', 'src/main/java']
  58. }
  59. java {
  60. srcDirs = []
  61. }
  62. }

  63. test {
  64. scala {
  65. srcDirs = ['src/test/scala', 'src/test/java']
  66. }
  67. java {
  68. srcDirs = []
  69. }
  70. }
  71. }
       上面的jar任務(wù)中,會exclude第三方j(luò)ar包的LICENSE.txt、NOTICE.txt等不需要的文件。

       但是上面的方式生成的jar包還是過大,能不能不把第三方j(luò)ar包打入我們自己的jar中,而是在一個lib目錄,然后運(yùn)行我們應(yīng)用程序時,再去引入這些第三方j(luò)ar呢?gradle提供這樣的插件:application。
       示例:
  1. apply plugin: 'scala'
  2. apply plugin: 'java'
  3. apply plugin: 'application'

  4. [compileJava, compileTestJava, javadoc]*.options*.encoding = 'utf-8'
  5. [compileJava, compileTestJava, compileScala]*.sourceCompatibility = "1.8"
  6. [compileJava, compileTestJava, compileScala]*.targetCompatibility = "1.8"

  7. // generate gradle wrapper
  8. task wrapper(type: Wrapper) {
  9. gradleVersion = '2.14.1'
  10. }

  11. // scala compiler options
  12. tasks.withType(ScalaCompile) {
  13. sourceCompatibility = 1.8
  14. targetCompatibility = 1.8
  15. configure(scalaCompileOptions.forkOptions) {
  16. memoryMaximumSize = '512m'
  17. }
  18. }

  19. ext {
  20. finagleVersion = '6.36.0'
  21. projectpath = '/xxx/yyy'
  22. }

  23. applicationName = 'xxx' // name of tar, zip and script
  24. mainClassName = 'com.zero.HelloWorld' // project main class name

  25. jar {
  26. exclude '*.conf', '*.xml'
  27. }

  28. repositories {
  29. //略
  30. }

  31. project.configurations {
  32. //略
  33. }

  34. dependencies {
  35. //略
  36. }

  37. task "mkdirs" << {
  38. //略
  39. }

  40. sourceSets {
  41. //略
  42. }

  43. // customize gradle distribution
  44. distributions {
  45. main {
  46. contents {
  47. into('conf') {
  48. from { 'src/main/resources' }
  49. }
  50. }
  51. contents {
  52. into('bin') {
  53. from { 'src/main/bash/xxx.sh' }
  54. }
  55. }
  56. }
  57. }

  58. // project runtimes JVM options
  59. applicationDefaultJvmArgs = ["-server",
  60. "-Dproject.home=${projectpath}",
  61. "-Dlog4j.configurationFile=${projectpath}/conf/log4j2.xml",
  62. "-Xms16g",
  63. "-Xmx16g",
  64. //略
  65. ]
       項目的工程目錄結(jié)構(gòu)如下:
  1. /src
  2. /src/main
  3. /src/main/bash
  4. /src/main/bash/xxx.sh
  5. /src/main/java
  6. /src/main/resources
  7. /src/main/resources/xxx.conf
  8. /src/main/resources/log4j2.xml
  9. /src/main/scala
  10. /src/test
       運(yùn)行g(shù)radle build后在build/distributions目錄中會生成projectname.tar和projectname.zip文件,解壓后會有bin、conf、lib這三個目錄。lib目錄中是我們應(yīng)用程序的jar和第三方j(luò)ar。在conf目錄中,由于
  1. jar {
  2. exclude '*.conf', '*.xml'
  3. }
       這會限制將*.conf、*.xml即相關(guān)配置文件打入jar包,而是將其移動到conf目錄中:
  1. contents {
  2. into('conf') {
  3. from { 'src/main/resources' }
  4. }
  5. }
       這就方便修改配置文件,但是需要在代碼中額外指定配置文件加載路徑。于是我們在JVM啟動參數(shù)中配置了"-Dproject.home=${projectpath}",這樣就可以找到配置文件了。同時也將可能用到的shell腳本移動到bin目錄中:
  1. contents {
  2. into('bin') {
  3. from { 'src/main/bash/xxx.sh' }
  4. }
  5. }
       在bin目錄中,除了我們的腳本,插件還會為我們生成projectname和projectname.bat腳本,在上述兩腳本中指定了JVM運(yùn)行參數(shù),即我們在build. gradle中寫明的,還有jar啟動腳本(會運(yùn)行我們的jar,并將第三方j(luò)ar添加至到-classpath參數(shù)中)。我們只需要在bin、conf、lib同級目錄中運(yùn)行bin/project(linux下)即可運(yùn)行我們的應(yīng)用程序。

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Eclipse 安裝Gradle插件
ZooKeeper學(xué)習(xí)之路 (四)ZooKeeper開發(fā)環(huán)境eclipse配置
Android Studio 簡單介紹和使用問題小結(jié)
初學(xué)者maven環(huán)境配置思路整理
用最簡單的gradle代碼,解決你java項目中的jar依賴之苦
自動化管理項目,Maven倉庫配置、安裝和使用
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服