当前位置: 首页 > 知识库问答 >
问题:

Gradle重复处理策略问题

史旺
2023-03-14

我有一个多项目成绩。

root
  +---- Project A
  +---- Project B

项目A依赖于项目B,但gradle先编译项目A,然后编译项目B。

我的文件:settings.gradle

rootProject.name = 'rootProject'
include 'projecta'
include 'projectb'

设计一个build.gradle

dependencies {
    implementation project(':projectb')
    implementation fileTree(dir: '../lib', include: '*.jar')
}

当我构建一个应用程序时,会得到错误。但我不知道该不该重复处理策略

错误:

Execution failed for task ':projectb:distTar'.
> Entry /lib/projecta.jar is a duplicate but no duplicate handling strategy has been set. Please refer to https://docs.gradle.org/7.1/dsl/org.gradle.api.tasks.Copy.html#org.gradle.api.tasks.Copy:duplicatesStrategy for details.

共有2个答案

谢翰学
2023-03-14

这对我有用

task copyDxComToLib(dependsOn: jar) {
    doLast {
        println '*** COPY PROJECTA.JAR TO LIB ***'
        copy {
            from '../build/projecta.jar'
            into '../lib'
            eachFile { file ->
                println '*** Copying file ' + file + ' to ./lib'
            }
        }
        
        println '*** COPY PROJECTA.JAR TO LIB ***'
    }
}

distZip.dependsOn = [copyprojectaDxComToLib]
公孙和怡
2023-03-14
task copyJarToLib(type: Copy) {
    if (project.name == 'projecta') {
        copy {
            from jar
            into '../lib'
            eachFile { file ->
                println 'Copying file ' + file + ' to ./lib'            
            }
        }        
    }
}

distZip.finalizedBy = [copyJarToLib]

但它会将文件复制到早期。我想在整个模块完成后复制该文件

 类似资料:
  • 我有以下步骤在批处理工作。 当某个异常抛出时,我在parseStepSkipListener中捕捉他并登录数据库。 我期待以下行为: 作业已启动 执行前面的步骤 开始执行解析步骤 阅读项目 进程项 写 哦,异常。 捕获异常,登录数据库,转到下一个块(读取、处理、写入)。 作业已启动 执行前面的步骤 开始执行解析步骤 阅读项目 进程项 写 哦,异常。 进程项 写入项 哦,异常。 捕获异常,登录数据库

  • 我正在尝试构建gradle项目,但当我尝试时,我得到以下输出: 在执行了之后,我得出结论,我的项目中甚至没有一个名为的文件。我该怎么办?

  • 在RetryTemplate里面,执行excuter方法是重试还是失败是由RetryPolicy决定的,这也是一个RetryContext工厂.这个RetryTemplate有责任使用当前的策略创建一个RetryContext并且把它注入到RetryCallback在每一次尝试中。回调失败后RetryTemplate必须由RetryPolicy决定使其更新状态(存储在RetryContext中),

  • 在瞬时失效之后做一个尝试它常常有助于在再试一次之前等待一会。因为通常失败是有一些问题引起的它只能通过等待来解决这些问题,如果RetryCallback失败,RetryTemplate可以暂停执行取决于BackoffPolicy在适当的位置 public interface BackoffPolicy { BackOffContext start(RetryContext context);

  • 我有以下一个批处理的Spring配置。我在生产批处理中遇到过一个问题,当一个特定的用例抛出一个不可跳过的异常时。当我在集成测试中复制用例时,批处理行为仍然很奇怪。当我的batch.commit-interval属性大于1时,将触发重试机制,回滚未提交的块,并再次处理所有以前的记录。当batch-commit-interval设置为1时,一旦抛出不可跳过的异常,批处理就会失败。 我尝试了batch-

  • 主要内容:1.死锁无知,2.死锁预防,3.避免死锁,4.死锁检测和恢复1.死锁无知 死锁无知是所有机制中使用最广泛的方法。 许多操作系统主要为最终用户使用。 在这种方法中,操作系统假定永远不会发生死锁。 它只是无视死锁。 这种方法最适合用户使用系统仅用于浏览和所有其他常规内容的单个最终用户系统。 正确性和性能之间总是有一个折衷。 Windows和Linux等操作系统主要关注性能。 但是,如果死锁发生的次数是100次,那么系统的性能就会一直下降,如果它始终使用死锁处理