gpt4 book ai didi

groovy - 在 Groovy 应用程序中包含依赖项而无需访问存储库

转载 作者:行者123 更新时间:2023-12-01 10:37:04 25 4
gpt4 key购买 nike

我有一个 Groovy 项目(使用 Eclipse),它使用了几个 @Grab 语句。这在我的开发机器上运行良好。但是,我需要将此应用程序(包括其所有依赖项)分发到没有任何 Internet 连接的其他机器,即无法从这些机器下载必要的 JAR。

有没有办法以某种方式自动将依赖项包含到项目中,例如lib 文件夹?这样我就可以将项目复制到另一台机器上并使用它。

最佳答案

因此,假设您有一个像这样的脚本 Script.groovy ,您当前使用 groovy Script.groovy 运行:

@Grab('com.github.groovy-wslite:groovy-wslite:1.1.2')
import wslite.rest.*

def client = new RESTClient("http://httpbin.org")
def response = client.get(path:'/get')

assert 200 == response.statusCode
println "Received : $response.json"

现在,我们想把它放到一个可以分发的 jar 文件中,人们可以使用 java -jar myApp.jar 运行

所以制作以下文件夹结构:
myApp
|-- src
| |-- main
| |-- groovy
| |-- example
| |-- Script.groovy
|-- build.gradle

然后,在 Script.groovy 中,放入您的脚本(带有包名,并且没有 @Grab 注释):
package example

import wslite.rest.*

def client = new RESTClient("http://httpbin.org")
def response = client.get(path:'/get')

assert 200 == response.statusCode
println "Received : $response.json"

build.gradle 中,放置这个脚本来拉下 groovygroovy-wslite 依赖项,并应用 shadow-jar 插件将所有依赖项捆绑到一个单一的胖 jar 中:
plugins {
id "com.github.johnrengelman.shadow" version "1.2.2"
}

apply plugin: 'groovy'
apply plugin: 'application'

repositories {
jcenter()
}

mainClassName = 'example.Script'

dependencies {
compile 'org.codehaus.groovy:groovy-all:2.4.5'
compile 'com.github.groovy-wslite:groovy-wslite:1.1.2'
}

然后你可以(假设你已经安装了 Gradle),只需运行:
gradle shadowJar

这将编译您的代码,并将其及其所有依赖项放入 build/libs/myApp-all.jar
那么,你可以运行:
java -jar build/libs/myApp-all.jar

你的脚本应该像以前一样运行......

然后你可以分发这个 jar 文件,而不仅仅是脚本......

希望这可以帮助

关于groovy - 在 Groovy 应用程序中包含依赖项而无需访问存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33431754/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com