Java游乐场的Gradle任务

Ordonezalex

我对Docker和Gradle还是陌生的,但是我试图建立一个构建Docker映像的Gradle构建。

我刚完成设置Dockerfile,可以按预期在本地部署和运行jar。我有这个在我的build.gradle

buildscript {
    repositories {
        mavenCentral()
    }

    dependencies {
        classpath 'se.transmode.gradle:gradle-docker:1.2'
    }
}

plugins {
    id 'com.github.johnrengelman.shadow' version '1.2.3'
}

apply plugin: 'docker'

jar {
    manifest {
        attributes 'Main-Class': 'com.myapp.Main'
    }
}


task buildDocker(type: Docker, dependsOn: shadowJar) {
    push = false

    applicationName = jar.baseName

    tagVersion = 'latest'
    dockerfile = file('src/main/docker/Dockerfile')

    copy {
        from shadowJar
        into stageDir
    }
}

我跑去./gradlew build buildDocker建立形象。到目前为止,我对此感到满意。

通常,我使用可以运行和忽略Playground.javamain方法来创建一个抛出类(例如通常,我只是在IDE中运行它,但是现在我希望能够连接到我知道将要运行的其他Docker容器。

我知道我可以尝试sourceSets通过排除来更改我正在使用I com.myapp.Main,但是我在想可能会有类似以下内容的更优雅的解决方案:

task buildDockerPlayground(type: Docker, dependsOn: shadowJar) {
    main = 'com.myapp.Playground'

    push = false

    applicationName = jar.baseName

    tagVersion = 'latest'
    dockerfile = file('src/main/docker/Dockerfile')

    copy {
        from shadowJar
        into stageDir
    }
}

另一种方法可能是让我build在调用时替换另一个任务./gradlew build buildDocker,例如./gradlew playground buildDocker这更实用吗?

乔丹·格兰特

我建议用gradle项目属性替换您的硬编码主类。

jar {
    manifest {
        attributes 'Main-Class': main
    }
}

gradle.properties文件中设置该默认属性

main=com.myapp.Main

最后,当您需要构建使用jar运行的com.myapp.Playgrounddocker容器时,可以使用以下命令调用gradle:

./gradlew buildDocker -Pmain=com.myapp.Playground

编辑:在任务中实现相同的目的

project.ext.main = 'com.myapp.Main'

task play(){
    project.main = 'com.myapp.Playground'
    finalizedBy buildDocker
}

jar {
    manifest {
        attributes 'Main-Class': project.main
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

RemoveAtIndex使游乐场崩溃

来自分类Dev

RemoveAtIndex使游乐场崩溃

来自分类Dev

游乐场留言“次数”

来自分类Dev

快速布尔-游乐场

来自分类Dev

Objective-C的游乐场

来自分类Dev

斯威夫特游乐场打印括号

来自分类Dev

斯威夫特游乐场和LeetCode OJ

来自分类Dev

MongoDB $ group(Mongo游乐场)

来自分类Dev

随机功能游乐场Swift

来自分类Dev

斯威夫特游乐场和LeetCode OJ

来自分类Dev

游乐场执行终止,因为游乐场进程意外退出

来自分类Dev

尝试在Swift游乐场中执行Xcode冻结?

来自分类Dev

进入游乐场以显示所有循环结果

来自分类Dev

游乐场执行失败:错误:无法查找符号

来自分类Dev

游乐场:使用未解决的标识符“ NSColor”

来自分类Dev

如何在Swift游乐场中获得画布

来自分类Dev

Xcode 6 Beta / Swift-游乐场未更新

来自分类Dev

斯威夫特游乐场结果位置错误

来自分类Dev

如何使用快速游乐场实现套接字连接?

来自分类Dev

游乐场执行Int()类型转换失败

来自分类Dev

GraphQL:如何通过游乐场传递查询变量?

来自分类Dev

我如何在Swift游乐场看到异常?

来自分类Dev

Xcode 6 Beta / Swift-游乐场未更新

来自分类Dev

在快速游乐场中使用T型

来自分类Dev

快速故障排除,在Xcode游乐场中显示数据?

来自分类Dev

斯威夫特游乐场结果位置错误

来自分类Dev

永久隐藏Xcode游乐场中的调试区域

来自分类Dev

游乐场-DispatchQueue和DispatchSemaphore之间的关系

来自分类Dev

如何链接 swift 游乐场中的页面?