0

非常にうまく機能するacegi プラグイン 0.5.2を使用して、 grails 1.2.0プロジェクトを作成しました。

プロジェクトを企業の構築インフラストラクチャに統合するには、maven を介して構築する必要があります。そこで、 grails maven 統合を使用してそれを maven プロジェクトに変換しましたが、これも非常にうまく機能しました。

問題が 1 つあります。GrailsUserインターフェイスを実装する Java クラス CustomUserDetails があります。Maven がプロジェクトをコンパイルしようとすると、 acegi プラグインの一部であるGrailsUserインターフェイス クラスが見つかりません。

何か不足していますか、それともプラグイン クラスがクラスパスから欠落する原因となる 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>
4

1 に答える 1

0

プロジェクトのソースコードをコンパイルするときに、プラグインのクラスパスが利用できることを期待していると思います。プラグインには独自のクラスローダーがあるため、クラスはそこにあるものを認識しません。

代わりに、GrailsUser インターフェースを含むライブラリーへのプロジェクト依存関係を定義し、その依存関係のスコープが compile (デフォルト) であることを確認してください。

于 2010-01-15T15:08:09.843 に答える