2013-05-19 12 views
8

私の根本的な問題は、私のコントローラとFreemarkerビューで "spring-test"ベースのテストを実行すると、WEB-INF/libフォルダ内にすべてのtaglibを置く必要があるということです。テスト中にそれらを見つける。私は次のような構成でこの問題を解決しました。テストを実行する前に実際にsrc/main/webapp/WEB-INF/libフォルダにtaglibs jarをコピーします。 IDEのこのテストを実行しているときに問題が同じであるため、このフォルダをクリアしません。maven-dependency-pluginのグラデーションに相当

<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" 
    ... 
} 

これらの依存関係を必要なフォルダにコピーするためのコードを追加してください:

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

compileTestJava{ 
    dependsOn copytaglibs 
} 

これはそれです。

関連する問題