【问题标题】:how grails 3.0.x create custom war name with different file suffixgrails 3.0.x 如何创建具有不同文件后缀的自定义战争名称
【发布时间】:2015-07-10 06:55:14
【问题描述】:

在 grails 3.0.(1,2,3) 中,war 文件存在于文件夹“build/libs”下

但是,我想用不同的文件后缀重命名战争名称,例如“app.tar.gz”,而不使用版本。

google 的结果都是关于 grails 2.x

我把grails.project.war.file = "target/${appName}.tar.gz"放在了conf文件夹下的application.groovy文件里,但是没用。

请帮帮我,我用谷歌搜索并尝试在源代码BuildSettings.groovy 中找到解决方案,但它没有用。

【问题讨论】:

    标签: grails gradle


    【解决方案1】:

    从 grails 版本 3 开始,构建工具是 gradle,您需要从 build.gradle 文件中更改这些参数

    如果您不希望版本作为包名称的一部分,则需要从 build.gradle 文件中注释(或删除)版本

    例如,运行以下代码

    fhenri@machine:~/project/grails/sample307$ grails -version
    | Grails Version: 3.0.7
    | Groovy Version: 2.4.4
    | JVM Version: 1.8.0_51
    fhenri@machine:~/project/grails/sample307$ grails package
    ...
    fhenri@machine:~/project/grails/sample307$ find . -name *.war
    ./build/libs/sample-0.1.war
    
    After you remove the version from `build.gradle` file
    fhenri@machine:~/project/grails/sample307$ grails package
    ...
    fhenri@machine:~/project/grails/sample307$ find . -name *.war
    ./build/libs/sample.war
    

    Grails 使用war gradle plugin,来自插件的模式使存档名称为[baseName]-[appendix]-[version]-[classifier].[extension],版本已经来自build.gradle 文件,由grails create-app 生成

    每一个都可以在战争闭包中被覆盖,例如,build.gradle 的摘录可以是

    version "0.1"
    war {
      appendix "so-test"
      version "1.0"
    }
    

    生成的war 文件将是sample-so-test-1.0.war 版本将来自war 闭包。

    因此,如果您想保留邮件version 属性但不想在生成的战争名称中生成版本,您可以用空值覆盖该属性

    version "0.1"
    war {
      version ""
    }
    

    将生成一个没有版本信息的war文件,但如果您想在其他地方使用它,您仍然可以保留它。

    要打包为 tar/zip,您可以 遵循 grails 3 的文档:http://grails.github.io/grails-doc/latest/guide/deployment.html(关于 TAR/ZIP 分发的章节)

    【讨论】:

    • war 文件名似乎无法从 build.gradle 中配置。似乎使用了“战争”插件。战争任务似乎神奇地可用,并且似乎不带任何配置参数。
    • @Michael gradle war 插件不带任何配置参数?不,这需要很多,请参阅gradle doc archivename 最终使war文件名默认为[baseName]-[appendix]-[version]-[classifier].[extension],并且版本也来自属性。我没有测试最新的 grails 3.1 版,但对于 3.0.x,它只是使用 gradle doc 定义的 war 任务并按预期工作
    • @Michael 重新运行我在 grails 3.1.9 上制作的所有示例仍然工作相同,所以不确定你的意思 war 文件名似乎无法从内部配置war 文件中的 build.gradle 版本来自 grails 生成后文件中的默认 version 版本,其他所有内容都可以通过 war 闭包进行配置
    • 我终于发现我可以添加一个战争闭包来覆盖设置,我发现你链接到的页面有可用的属性。如果您对 Gradle 一无所知,这并不容易直观。但是,现在它是有道理的,因为我花了一些时间。
    • @Michael 是的,但现在 grails 使用 gradle 如果你需要高级构建功能,你需要打开 gradle,好在有很好的文档和良好的社区
    【解决方案2】:

    在 build.gradle 中,应用 gradle war 插件后你可以这样做:

    war {
       archiveName = "ROOT.war"
    }
    

    并且会在 build/libs 创建一个 ROOT.war 文件

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-15
      • 2010-11-03
      • 1970-01-01
      • 1970-01-01
      • 2010-09-14
      • 2021-12-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多