我刚刚将Grails web-app从3.2版升级到4.0版。
我在build.gradle
中提供了依赖项(相当常见的配置):
dependencies {
...
compile "org.springframework.boot:spring-boot-starter-logging"
compile "org.springframework.boot:spring-boot-autoconfigure"
compile "org.springframework.boot:spring-boot-starter-actuator"
provided "org.springframework.boot:spring-boot-starter-tomcat"
...
}
我刚刚注意到,通过执行GradleAssemble
任务,我不再获得myapp.war.arrigine
归档文件(该文件过去是在没有提供所有libs的情况下构建的),而只获得包含提供的依赖项的文件。
我是不是漏掉了什么?我真的很想在lib提供的
文件夹中保留4MB的JAR。提前感谢!
更新1
根据@ck1的建议,我将providedcompile
依赖项更改为providedcompile
,但结果是相同的。虽然我已经使用了war
插件,但我注意到Assemble
任务启动的任务顺序是:
> Task :assetCompile
Finished Precompiling Assets
> Task :compileJava
> Task :compileGroovy
> Task :buildProperties
> Task :processResources
> Task :classes
> Task :compileWebappGroovyPages NO-SOURCE
> Task :compileGroovyPages
> Task :compileGsonViews
> Task :findMainClass
> Task :bootWar
> Task :war SKIPPED
> Task :assemble
因此,跳过war
任务,转而使用新的bootwar
任务(在Gradle 3中不可用,由Grails 3使用)。有办法强迫吗?或者是插件应该已经支持的东西?
更新2
经过一番研究,我添加到build.gradle
war {
enabled = true
}
并且能够执行war
任务:
> Task :assetCompile
Finished Precompiling Assets
> Task :compileJava
> Task :compileGroovy
> Task :buildProperties
> Task :processResources
> Task :classes
> Task :compileWebappGroovyPages NO-SOURCE
> Task :compileGroovyPages
> Task :compileGsonViews
> Task :findMainClass
> Task :bootWar
> Task :war // not skipped
> Task :assemble
我基本上到达了我想要的地方,即在没有提供的所有依赖项的情况下获得一个。war存档;但是与以前不同的是,不是一对。war归档(myapp.war
和myapp.war.originent
),而是一个名为myapp.war
的文件,不包括不需要的东西。
但是我仍然很困惑,因为Spring Boot的Gradle插件文档指出bootwar
是war
的扩展。
bootRepackage任务已经被分别用于构建可执行JAR和WAR的bootJar和bootWar任务所取代。罐子和战争任务不再涉及。
再说一遍,我错过了什么?
您应该用war
插件中的providcompile
或providedruntime
依赖项配置替换提供的。
这两个配置与各自的编译和运行时配置具有相同的作用域,只是它们没有添加到WAR归档中。
参考资料:
https://docs.gradle.org/4.10.2/userguide/war_plugin.html
我有一个非常基本的多项目分级设置,如下所示: 文件包括这两个子项目。根项目不应用java插件,但两个子项目都应用了。使用时,所有东西都按预期生成。 但是,据我所知,由于我没有在根项目中应用插件,因此它不应该有任务。 的输出显示任务。 但的输出只显示列有和。 所以我的问题是--在这个场景中到底执行了什么?gradle只是找到所有子项目中匹配供应模式的每一个任务吗?是否有关于此任务名称解析的特定规则?
我在以可管理的方式组织构建时遇到了问题。在我的gradle构建中有大量的任务,因为对于每个特定的工作元素,gradle都需要一个这种类型的任务。例如:复制一个文件分级需要复制任务类型,压缩一个文件分级需要压缩任务类型,删除几个文件分级需要删除任务类型。Javadoc、Jar、Ear等也需要它们的任务类型。最终,build有大量的任务,要以特定的顺序运行所有这些任务,我必须使用 将这些规则应用于所有
我刚安装了VSCode,还有这个小小的基本打字应用程序。 第一次,当我想要构建应用程序时,VScode需要生成任务。json。 它在很久以前就起作用了。 今天我收到一条奇怪的信息 未定义生成任务。在tasks.json文件中标记一个任务。 我不记得以前看到过这个消息。 但是,好的,我单击Configure Build Task,选择TypeScript Task,然后单击tasks。生成json。
我为我的项目启用了gradle构建缓存。但是,我们使用了一些非内置任务,例如来自第三方插件的npm-install。Gradle没有为这些任务启用缓存。例如,当执行此类任务时,它会显示如下内容: 有没有办法为此类非内置任务启用生成缓存?
问题内容: 我一般在vaadin框架上有问题。 我创建了一个类来扩展vaadin应用程序(MyFirst),然后用vaadin可视设计器(MyFormApp)创建了一个自定义组件。 我确实实例化了自定义组件MyFormApp,并将其添加到MyFirst的主窗口中。 部署应用程序后,vaadin生成的页面未显示任何组件。 我的代码: 我的第二堂课是MyFirstApp(自定义组件): 在执行serv
我想为一个Android项目创建一个自定义的gradle任务,这将调用其他任务链,取决于构建风格和构建配置。 所以,这就是我在build.gradle.kts中所做的事情(我们使用kotlin脚本) 所以如果我运行./gradlew任务 null