2013-05-19 53 views
8

我的根本問題是,運行「春天測試」時,我的控制器和Freemarker的意見爲基礎的測試,我需要有內部的WEB-INF/lib文件夾中的所有標籤庫 - 否則的freemarker不會在測試期間找到它們。我用以下的maven配置解決了這個問題。在運行測試之前,它實際上會將taglibs jar複製到src/main/webapp/WEB-INF/lib文件夾中。我不想清除此文件夾,因爲在爲IDE運行此測試時問題相同。搖籃相當於Maven的依賴,插件

<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> 

現在我正在將我的項目遷移到gradle。我如何用gradle實現相同?

回答

10

這是我如何解決了這個問題(在相同的maven實際上):

添加另一個配置的依賴關係:

configurations{ 
    taglibs { transitive = false } 
} 

添加需要依賴這種配置:

dependencies { 
    ... 
    taglibs "org.springframework.security:spring-security-taglibs:$springSecurityVersion" 
    ... 
} 

添加gradle代碼以將這些依賴關係複製到所需的文件夾中:

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

compileTestJava{ 
    dependsOn copytaglibs 
} 

這就是它。