拆分在摇篮所有输出目录

shammancer:

4.0摇篮昨天走了出来,我更新了它的项目。

现在,我得到以下警告:

摇篮现在使用单独的输出目录中每个JVM的语言,但这个版本假设从源集合中的所有类的单一目录。此行为已取消,并计划在摇篮5.0被删除

我想用不同的输出目录为每种语言。我需要做什么来改变要做到这一点?


事情我想:

  • gradle clean 其次是 gradle build
  • 删除构建目录,然后运行gradle build
  • 删除gradle这个和构建目录,然后运行 gradle

相关GitHub的问题


摇篮插件:

  • java的
  • 日食
  • 理念
  • org.springframework.boot
gavenkoa:

摇篮4.0引入了多种sourceSet每个JVM语言S IN为了使远程构建缓存。随着java插件你build/classes/main应该成为build/classes/java/mainbuild/classes/test应该成为build/classes/java/test等等。

警告你所看到的是在定义DefaultSourceSets.java

因此,如果您的项目或内的任何插件build.gradle调用DefaultSourceSetOutput.getClassesDir()(或接入classesDir),你得到这个警告。

解决方法1

sourceSets.main.output.classesDir = new File(buildDir, "classes/main")

这相当于:

@Override
public boolean isLegacyLayout() {
    return classesDir!=null;
}

@Override
public void setClassesDir(File classesDir) {
    setClassesDir((Object)classesDir);
}

@Override
public void setClassesDir(Object classesDir) {
    this.classesDir = classesDir;
    this.classesDirs.setFrom(classesDir);
}

需要注意的是SourceSetOutput.java标记getClassesDir()为过时。

因此,除非在摇篮4.0项目获得支撑所有的插件,你应该坚持的解决方法,而忽略了废弃警告。

另一个问题是测试文件。如果你不希望有新的布局build/classes/mainbuild/classes/java/test),你应该调整测试路径太:

sourceSets.main.output.classesDir = new File(buildDir, "classes/main")
sourceSets.test.output.classesDir = new File(buildDir, "classes/test")

UPDATE IDEA的用户可能会注意到IDE使用单独的开始out,如果检测到摇篮4.x版的编译目录。这使得不可能热应用重装如果您运行的IDEA应用程式以外。为了解决这个问题添加和重新导入:

subprojects {
    apply plugin: 'idea'
    // Due to Gradle 4.x changes (separate output directories per JVM language)
    // Idea developers refuse to reuse Gradle classpath and use own 'out/' directory.
    // Revert to old behavior to allow Spring Devtool to work with using fast Idea compiler.
    // https://youtrack.jetbrains.com/issue/IDEA-175172
    // Alternatively use native Gradle builds or bootRun.addResources = true
    // To use this feature push Ctrl+Shift+F9 to recompile!
    // Be aware that Idea put resources into classes/ directory!!
    idea.module.inheritOutputDirs = false
    idea.module.outputDir = sourceSets.main.output.classesDir
    idea.module.testOutputDir = sourceSets.test.output.classesDir
}

请注意,IDEA放的资源投入到同一个目录中.class的文件,以便您的摇篮类路径可能会损坏。只要做gradle clean对您使用内置的构建命令(Ctrl + Shift + F10等),IDEA模块。

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将文件复制到在摇篮平板目录

ClassNotFound的错误在摇篮for Java项目

如何拆分在蜂巢中具有$$的列值

安装LiquiBase在摇篮春季启动Hibernate项目

如何排除在摇篮的传递可选Maven的系统?

对目录中的所有文件运行R代码,并在单独的目录中输出所有文件

“没有解决:com.android.support:support-v4:26.0.0”和其他类似的错误在摇篮同步

杀死所有的摇篮守护进程忽略版本?

摇篮禁用所有增量编译和并行编译

摇篮配置。所有模棱两可

摇篮。如何从收集中打印所有文件{}

摇篮输入和输出

!(notThisDir)的正确输出是什么?复制除一个目录外的所有目录

Makefile - 编译所有子目录并在单独的目录中输出 .o 文件

遍历目录中的所有输入并使用输入名称创建输出目录

删除find输出中的所有目录,并将输出重定向到新文件

通过合并/拆分在列表中进行有效的最小发现

条纹集成在摇篮项目中使用科特林

如何配置在摇篮多项目构建每科特林项目?

怎样才能在摇篮构建测试范围映射接口Mapstruct mapper实现?

在摇篮,[怎么]我们应该针对Android和JRE?

试图写在摇篮一个插件,我找不出什么我需要实现插件

为什么不是“API”的方法可用在摇篮4.4 / Java插件,当“执行”是什么?

编译另一个没有所有引用的打字稿输出目录

摇篮包括目录传递依赖

输出所有结果?

Python递归遍历所有子目录,并将文件名写入输出文件

如何删除所有名为“输出”的子目录的内容?

通过命令的输出制作所有子目录的数组