2010-01-15 55 views
0

我創建了一個grails 1.2.0項目,使用了acegi插件0.5.2,這非常有效。未添加到Maven的Grails acegi插件類

要將項目整合到我們公司的基礎架構中,我需要通過maven構建它。所以我使用grails maven integration將其轉換爲maven項目,這些工作也非常好。

有一個問題:我有一個Java類CustomUserDetails,它實現了GrailsUser接口。當maven試圖編譯該項目時,它找不到接口類,它是acegi插件的一部分。

我是否錯過了某些東西,或者是否存在導致類路徑中缺少插件類的grails maven集成的問題?

更新:這裏是我的項目的pom.xml:

<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.troii</groupId> 
    <artifactId>testapp</artifactId> 
    <packaging>war</packaging> 
    <version>1.0-SNAPSHOT</version> 

    <dependencies> 
    <dependency> 
     <groupId>org.grails</groupId> 
     <artifactId>grails-crud</artifactId> 
     <version>1.2.0</version> 
    </dependency> 
    <dependency> 
     <groupId>org.grails</groupId> 
     <artifactId>grails-gorm</artifactId> 
     <version>1.2.0</version> 
    </dependency> 

    <!-- Grails defaults to Ehache for the second-level Hibernate cache. --> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-ehcache</artifactId> 
     <version>3.3.1.GA</version> 
    </dependency> 
    <dependency> 
     <groupId>javassist</groupId> 
     <artifactId>javassist</artifactId> 
     <version>3.11.0.GA</version> 
    </dependency> 

    <dependency> 
     <groupId>net.sf.ehcache</groupId> 
     <artifactId>ehcache-core</artifactId> 
     <version>1.7.1</version> 
     <exclusions> 
      <exclusion> 
       <artifactId>jms</artifactId> 
      </exclusion> 
      <exclusion> 
       <artifactId>servlet-api</artifactId> 
      </exclusion> 

      <!-- We have JCL-over-SLF4J instead. --> 
      <exclusion> 
       <artifactId>commons-logging</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 

    <!-- For ease of development and testing, we include the HSQLDB database. --> 
    <dependency> 
     <groupId>hsqldb</groupId> 
     <artifactId>hsqldb</artifactId> 
     <version>1.8.0.10</version> 
    </dependency> 

    <!-- Use Log4J for logging. This artifact also pulls in the Log4J JAR. --> 
    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-log4j12</artifactId> 
     <version>1.5.8</version> 
     <scope>runtime</scope> 
    </dependency> 

    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>jstl</artifactId> 
     <version>1.2</version> 
    </dependency> 
    </dependencies> 

    <repositories> 
    <!-- Required to get hold of JTA --> 
    <repository> 
     <id>maven2-repository.dev.java.net</id> 
     <name>Java.net Repository for Maven</name> 
     <url>http://download.java.net/maven/2/</url> 
     <layout>default</layout> 
    </repository> 
    <repository> 
     <id>Codehaus Snapshots</id> 
     <url>http://snapshots.repository.codehaus.org</url> 
     <snapshots> 
     <enabled>true</enabled> 
     </snapshots> 
     <releases> 
     <enabled>false</enabled> 
     </releases> 
    </repository> 
    </repositories> 

    <pluginRepositories> 
    <pluginRepository> 
     <id>Codehaus Snapshots</id> 
     <url>http://snapshots.repository.codehaus.org</url> 
     <snapshots> 
     <enabled>true</enabled> 
     </snapshots> 
     <releases> 
     <enabled>false</enabled> 
     </releases> 
    </pluginRepository> 
    </pluginRepositories> 

    <build> 
    <pluginManagement /> 
    <plugins> 
     <plugin> 
     <groupId>org.grails</groupId> 
     <artifactId>grails-maven-plugin</artifactId> 
     <version>1.2.0</version> 
     <extensions>true</extensions> 
     <executions> 
      <execution> 
      <goals> 
       <goal>init</goal> 
       <goal>maven-clean</goal> 
       <goal>validate</goal> 
       <goal>config-directories</goal> 
       <goal>maven-compile</goal> 
       <goal>maven-test</goal> 
       <goal>maven-war</goal> 
       <goal>maven-functional-test</goal> 
      </goals> 
      </execution> 
     </executions> 
     </plugin> 
     <plugin> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <configuration> 
      <source>1.5</source> 
      <target>1.5</target> 
     </configuration> 
     </plugin> 
    </plugins> 
    </build> 
    <profiles> 
    <profile> 
     <id>tools</id> 
     <activation> 
     <property> 
      <name>java.vendor</name> 
      <value>Sun Microsystems Inc.</value> 
     </property> 
     </activation> 
     <dependencies> 
     <dependency> 
      <groupId>com.sun</groupId> 
      <artifactId>tools</artifactId> 
      <version>${java.version}</version> 
      <scope>system</scope> 
      <systemPath>${java.home}/../lib/tools.jar</systemPath> 
     </dependency> 
     </dependencies> 
    </profile> 
    </profiles> 
</project> 
+0

你可以發佈pom.xml文件嗎? – rodrigoap 2010-01-15 13:48:53

回答

0

我認爲正在發生的事情是你期待的類路徑的插件可用編譯你的項目的源代碼時。插件有自己的類加載器,所以你的類不會看到那裏的東西。

相反,將一個項目依賴項定義到一個包含GrailsUser接口的庫,並確保該依賴項的範圍是compile(默認值)。

+0

是的,我認爲這是類似的原因,我不確定這是一個錯誤還是需要做一些不同的事情。 你知道是否有一個包含acegi插件類的maven工件嗎? – 2010-01-15 20:05:15

+0

做這樣的工作嗎? MVN的Grails:安裝,插件-DpluginName = Acegi的 MVN初始化 此處瞭解詳情:http://www.grails.org/Maven+Integration 我沒有上述 – 2010-01-15 20:50:51

+0

測試不,這將安裝Grails的插件,但品牌沒有改變對maven的依賴 – 2010-01-18 12:01:41