Gradle Application Plugin - 为具有不同mainClassName的同一项目构建多个启动脚本/ dists

 龍的闖人_399_664 发布于 2023-02-08 15:43

我们有一个使用java插件的Gradle项目,它有几个需要构建的命令行工具.该项目只是打包成一个带有依赖项的jar.然后,我们需要几个启动脚本来启动该项目中每个工具的各个入口点.

自然,应用程序插件是一个不错的选择.所以我们将java改为application并提供了一个mainClassName创建启动脚本和tar distributable的.这有助于创建单个应用程序jar,但只使用一组使用指定的mainClassName的启动脚本.

我们如何为不同的入口点创建多个启动脚本?(不同mainClassName的?)

我尝试过的一种方法是创建一些应用应用程序插件的子项目,并分别指定了各个mainClassNames

allprojects {
    apply plugin: 'java'

    repositories { 
        // maven repos           
    }

    dependencies {
        compile 'com.thirdparty:somejar:1.0'
    }

    sourceCompatibility = 1.7
}


subprojects {
    apply plugin: 'application'
}


project(':tools:csvLoader') {
    mainClassName = 'com.demo.tools.csvLoader.Loader'
}

project(':tools:summariser') {
    mainClassName = 'com.demo.tools.summary.Summarise'
}

并在根项目settings.gradle中引用

include "tools","tools:csvLoader","tools:summariser"

这工作 - 但每个子项目创建一个相同的jar(只用子项目的名称命名),每个subdir构建文件夹保存该jar的副本以及所有依赖项的另一个副本.多数民众赞成感觉有点浪费.对于那些看到子项目的新开发人员来说,所有这些任务都没有任何代码,这也可能会令人困惑.

有没有更好的方法来告诉gradle做多个与应用程序相关的任务,但是为每个任务更改mainClassName而不必求助于创建空子项目?

谢谢!

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有