小编Sho*_*aib的帖子

为每种应用程序风格创建多个shadowJars

我正在尝试使用gradle并尝试设置一个系统来构建应用程序的不同风格(品牌),这些系统主要因配置而异.到目前为止我所拥有的是两个版本的构建脚本 - 两者都不起作用.

版本1添加了
第一个特定flavor-res于风味的资源文件夹sourcesets,可以覆盖一些默认资源.任务规则定义每种风味的任务,这应该(理想情况下)触发整个jar的构建.

这样可以正常工作并生成所需的罐子,一次一种口味,就像

gradle clean flavorOne 
Run Code Online (Sandbox Code Playgroud)

shadowJar如果我这样做,任务只运行一次

gradle clean flavorOne flavorTwo
Run Code Online (Sandbox Code Playgroud)

剥离脚本:

sourceSets {
    main {
        ...
        resources {
            srcDirs = ['src/main/resources', "${project.buildDir}/flavor-res/"]
        }
    }
}

shadowJar { classifier = 'SNAPSHOT' }

tasks.addRule("Pattern: flavor<Name>") { String taskName ->
if (taskName.startsWith("flavor")) {

    String flavorName = (taskName - "flavor")
    String flavorOutDir = "${project.buildDir}/${flavorName}"

    // Set output folder and jar name 
    task("${taskName}Configure") {
        outputs.dir(flavorOutDir)

        doFirst {
            archivesBaseName = flavorName
            project.buildDir = flavorOutDir
        }
    } …
Run Code Online (Sandbox Code Playgroud)

java jar gradle build.gradle shadowjar

5
推荐指数
1
解决办法
473
查看次数

升级到 Angular 12 - NullInjectorError:没有 InjectionToken 的提供者

最初的实现是基于中描述的模式

https://shashankvivek-7.medium.com/forroot-injectiontoken-in-action-angular-c2bab9959207

它一直在工作,直到我将其升级到 Angular 12。升级后,我不断收到 NullInjector 错误。无论如何都无法解决这个问题,我最终为 Angular 11 和 12 创建了两个普通的简单项目。此外,我将令牌提供程序从项目模块移至应用程序模块。

Angular 12 示例 https://drive.google.com/file/d/1lE8RL6s8L9n6zQYqVOaLqMW9ikMfMgSu/view?usp=sharing

Angular 11 示例 https://drive.google.com/file/d/1HxhCz3i5nmrK8Zj0eddTlk8zz-29lwlh/view?usp=sharing

Angular 11 版本可以工作(甚至是 prod 模式),但其他版本会遇到相同的错误。

喷油器错误

这就是调试器内部的样子

调试器

看起来像这条线

let record = this.records.get(token);
Run Code Online (Sandbox Code Playgroud)

在 R3Injector.get 中,即使记录存在于记录列表中,也始终无法通过令牌找到记录,如图所示(索引 58)。因此,索引 78 处的重复记录被添加。密钥和令牌参数似乎是相同的。

我无法找到有关它的任何明确信息或修复它的方法。

angular

1
推荐指数
1
解决办法
3782
查看次数

标签 统计

angular ×1

build.gradle ×1

gradle ×1

jar ×1

java ×1

shadowjar ×1