Java gradle为战争依赖项导入了什么?我如何控制/操作战争内容?

Java gradle为战争依赖项导入了什么?我如何控制/操作战争内容?,java,maven,gradle,dependencies,Java,Maven,Gradle,Dependencies,我在gradle项目依赖项中添加了一个war。 我需要扩展一些类,并从中使用修改过的servlet上下文 我希望war能够按原样导入,然后我将使用gradle任务进行操作,将JAR包含到依赖项中,将静态资源复制到正确的类路径中,等等。 但gradle实际上在依赖项中添加了一堆jar 我不确定gradle是否递归扫描JAR和POM的所有路径,或者可能只是war中WEB-INF/classes文件夹下的JAR。 我可以假设poms存储库可能不是 Im I correct是否假设未导入泄气war中WE

我在gradle项目依赖项中添加了一个war。 我需要扩展一些类,并从中使用修改过的servlet上下文

我希望war能够按原样导入,然后我将使用gradle任务进行操作,将JAR包含到依赖项中,将静态资源复制到正确的类路径中,等等。 但gradle实际上在依赖项中添加了一堆jar

我不确定gradle是否递归扫描JAR和POM的所有路径,或者可能只是war中WEB-INF/classes文件夹下的JAR。 我可以假设poms存储库可能不是

Im I correct是否假设未导入泄气war中WEB-INF/lib文件夹中的JAR?这很难说,因为我的项目和正在讨论的战争之间有很多共同的依赖关系

那么,如果我需要像上面所描述的那样进行扩展和修改,那么在maven repo/jcenter中声明对war的依赖性的最佳方法是什么

更新:

我现在尝试使用下面的答案和这个解决方案 ,这仅在将带有复制JAR的目录移动到buildDir之外之后才起作用 我的身材,格雷德尔

configurations {
    warOnly
}
dependencies {   
// not working    implementation fileTree('$buildDir/explodedWar/WEB-INF/classes')
    implementation fileTree('anotherDir/explodedWar/WEB-INF/classes')
//    implementation fileTree('$buildDir/explodedWar/WEB-INF/lib')
    implementation fileTree('anotherDir/explodedWar/WEB-INF/lib')
    warOnly 'ca.uhn.hapi.fhir:hapi-fhir-jpaserver-starter:4.2.0@war'
    }
    tasks.register("explodeWar",Copy) {
        from zipTree(configurations.warOnly.singleFile)
   //     into "${buildDir}/explodedWar"
    into "anotherDir/explodedWar"
    }
    compileJava {
        dependsOn explodeWar

    }

通过声明对WAR的依赖关系,Gradle只需将其添加到匹配配置的文件列表中。因此,如果在实现中添加WAR,它将位于compileClasspath和runtimeClasspath上,而不进行任何处理

因此,可以肯定的是,Gradle不会将您的WAR依赖项转换为它所包含的JAR依赖项

如果要在重新打包之前使用WAR复制和修改其某些内容,可以使用独立的自定义配置从远程存储库解析它。然后,您将定义一个Gradle任务,该任务将以该配置的文件作为输入,并在WAR上执行所需的处理。请注意,该任务也可以是一系列任务的起点,将战争处理为一个输出,然后再将该输出处理为另一个输出,等等

configurations {
    warOnly
}
dependencies {
    warOnly "com.pany:some-war:1.0"
}
tasks.register("copyWar", Copy) { // Register a copy task to modify the WAR
    from(zipTree(configurations.warOnly)) // I did not run this, so you may have to get to the single file instead
    // Regular copy configuration to decide a destination, perform on the fly changes, etc ...
}