Gradle相当于maven-dependency-plugin

Iva*_*pov 9 gradle maven maven-dependency-plugin

我的根本问题是,当我为控制器和Freemarker视图运行基于"spring-test"的测试时,我需要在WEB-INF/lib文件夹中包含所有taglib - 否则freemarker将无法在测试期间找到它们.我使用以下maven配置解决了这个问题.它实际上在运行测试之前将taglibs jar复制到src/main/webapp/WEB-INF/lib文件夹.我不想清除此文件夹,因为在为IDE运行此测试时问题是相同的.

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.3</version>
<executions>
    <!-- Freemaarker requires that all taglibs should reside in WEB-INF/lib folder -->
    <execution>
        <id>tests</id>
        <phase>test-compile</phase>
        <goals>
            <goal>copy</goal>
        </goals>
        <configuration>
            <outputDirectory>${basedir}/src/main/webapp/WEB-INF/lib/</outputDirectory>
            <artifactItems>
                <artifactItem>
                    <groupId>org.springframework.security</groupId>
                    <artifactId>spring-security-taglibs</artifactId>
                    <version>${spring.security.version}</version>
                </artifactItem>
            </artifactItems>
        </configuration>
    </execution>
</executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)

现在我正在将我的项目迁移到gradle.如何用gradle实现同样的目标?

Iva*_*pov 14

这是我如何解决这个问题(实际上与maven相同):

为依赖项添加另一个配置:

configurations{ 
     taglibs { transitive = false }
}
Run Code Online (Sandbox Code Playgroud)

为此配置添加所需的依赖项:

dependencies {
    ...
    taglibs "org.springframework.security:spring-security-taglibs:$springSecurityVersion"
    ...
}
Run Code Online (Sandbox Code Playgroud)

添加gradle代码以将这些依赖项复制到所需的文件夹:

task copytaglibs << { 
   copy { 
      from configurations.taglibs
      into 'src/main/webapp/WEB-INF/lib'
   }
} 

compileTestJava{
   dependsOn copytaglibs
}
Run Code Online (Sandbox Code Playgroud)

就是这个.