2011-11-03 8 views
8

Zajmuję się tworzeniem aplikacji w architekturze DDD przy użyciu funkcji Spring LoadTimeWeaving. Problem polega na tym, że mogę uruchomić moje testy Junit używając Eclipse, ale nie przez Mavena. Próbowałem wszystkich opcji podanych na różnych stronach, ale po prostu nie działa. Otrzymuję następujący wyjątek:Testy jednostki wykonawczej przy użyciu Maven na wiosnę Środowisko LTW

Wywołany przez: org.springframework.beans.factory.BeanCreationException: Błąd podczas tworzenia komponentu bean o nazwie "loadTimeWeaver": Inicjalizacja komponentu bean nie powiodła się; Zagnieżdżony wyjątek to java.lang.IllegalStateException: ClassLoader [sun.misc.Launcher $ AppClassLoader] NIE udostępnia metody "addTransformer (ClassFileTransformer)". Określ niestandardowy LoadTimeWeaver lub uruchom maszynę wirtualną Java za pomocą agenta Spring: -javaagent: org.springframework.instrument.jar

Dodałem słoik instrumentów jako część argLine do wtyczki surefire. Poniżej znajdują się moje artefakty kodów. Proszę dać mi znać, gdzie idę źle lub jeśli jest jakieś inne rozwiązanie.

Używam Eclipse Indigo Rozwoju, Maven 3.0 na Mac OSX

pom.xml (skrócona tylko ważnych szczegółów)

<dependencies> 
    <!-- Spring Dependencies --> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-core</artifactId> 
     <version>${spring.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-web</artifactId> 
     <version>${spring.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-beans</artifactId> 
     <version>${spring.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-context</artifactId> 
     <version>${spring.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-aop</artifactId> 
     <version>${spring.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-context-support</artifactId> 
     <version>${spring.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-tx</artifactId> 
     <version>${spring.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-orm</artifactId> 
     <version>${spring.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-jdbc</artifactId> 
     <version>${spring.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-test</artifactId> 
     <version>${spring.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-aspects</artifactId> 
     <version>${spring.version}</version> 
    </dependency> 


    <!-- Spring Security Dependencies --> 
    <dependency> 
     <groupId>org.springframework.security</groupId> 
     <artifactId>spring-security-core</artifactId> 
     <version>${spring.security-version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.security</groupId> 
     <artifactId>spring-security-config</artifactId> 
     <version>${spring.security-version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.security</groupId> 
     <artifactId>spring-security-web</artifactId> 
     <version>${spring.security-version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.security</groupId> 
     <artifactId>spring-security-taglibs</artifactId> 
     <version>${spring.security-version}</version> 
    </dependency> 

    <!-- AspectJ 
    <dependency> 
     <groupId>org.aspectj</groupId> 
     <artifactId>aspectjrt</artifactId> 
     <version>${org.aspectj-version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.aspectj</groupId> 
     <artifactId>aspectjweaver</artifactId> 
     <version>${org.aspectj-version}</version> 
    </dependency>--> 

    <!-- Persistence Dependencies --> 
    <dependency> 
     <groupId>mysql</groupId> 
     <artifactId>mysql-connector-java</artifactId> 
     <version>5.1.18</version> 
    </dependency> 
    <dependency> 
     <groupId>c3p0</groupId> 
     <artifactId>c3p0</artifactId> 
     <version>0.9.1.2</version> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate.java-persistence</groupId> 
     <artifactId>jpa-api</artifactId> 
     <version>2.0-cr-1</version> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-entitymanager</artifactId> 
     <version>3.6.7.Final</version> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-validator</artifactId> 
     <version>4.2.0.Final</version> 
    </dependency> 
    <dependency> 
     <groupId>com.googlecode.genericdao</groupId> 
     <artifactId>dao</artifactId> 
     <version>1.0.0</version> 
    </dependency> 
    <dependency> 
     <groupId>com.googlecode.genericdao</groupId> 
     <artifactId>search-jpa-hibernate</artifactId> 
     <version>1.0.0</version> 
    </dependency> 

    <!-- Web Dependencies --> 
    <dependency> 
     <groupId>opensymphony</groupId> 
     <artifactId>sitemesh</artifactId> 
     <version>2.4.2</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.commons</groupId> 
     <artifactId>commons-lang3</artifactId> 
     <version>3.0.1</version> 
    </dependency> 

    <!-- Testing Dependencies --> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>4.8.1</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-instrument</artifactId> 
     <version>3.1.0.M2</version> 
     <scope>test</scope> 
    </dependency> 
</dependencies> 
<build> 
    <finalName>jtemplate</finalName> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-site-plugin</artifactId> 
      <version>3.0</version> 
      <configuration> 
       <reportPlugins> 
        <plugin> 
         <groupId>org.apache.maven.plugins</groupId> 
         <artifactId>maven-project-info-reports-plugin</artifactId> 
         <version>2.2</version> 
         <reports> 
          <report>index</report> 
          <report>project-team</report> 
          <report>license</report> 
          <report>mailing-list</report> 
          <report>dependencies</report> 
          <report>dependency-convergence</report> 
          <report>plugin-management</report> 
          <report>cim</report> 
          <report>issue-tracking</report> 
          <report>scm</report> 
          <report>summary</report> 
         </reports> 
        </plugin> 
        <plugin> 
         <groupId>org.apache.maven.plugins</groupId> 
         <artifactId>maven-surefire-report-plugin</artifactId> 
         <version>2.10</version> 
         <configuration> 
          <forkMode>pertest</forkMode> 
          <argLine>-javaagent:/Users/vishals/.m2/repository/org/springframework/spring-instrument/3.1.0.M2/spring-instrument-3.1.0.M2.jar</argLine> 
          <useSystemClassloader>true</useSystemClassloader> 
         </configuration> 
        </plugin> 
        <plugin> 
         <groupId>org.apache.maven.plugins</groupId> 
         <artifactId>maven-javadoc-plugin</artifactId> 
         <version>2.7</version> 
        </plugin> 
        <plugin> 
         <groupId>org.apache.maven.plugins</groupId> 
         <artifactId>maven-checkstyle-plugin</artifactId> 
         <version>2.6</version> 
         <configuration> 
          <configLocation>${basedir}/src/main/resources/mkcl-egov.xml</configLocation> 
         </configuration> 
         <!-- <configuration> Adopt config location to your needs, or remove 
          configuration entry completly to use default version. <configLocation>http://stud.hs-heilbronn.de/~nischmid/development/checkstyle-config.xml</configLocation> 
          </configuration> </plugin> <plugin> <groupId>org.codehaus.mojo</groupId> 
          <artifactId>findbugs-maven-plugin</artifactId> <version>2.3.1</version> <configuration> 
          <argLine>-Xmx256m</argLine> <argLine>-XX:MaxPermSize=256m</argLine> </configuration> --> 
         <!-- Usually findbugs needs a lot of memory, change these values if 
          needed. --> 
        </plugin> 
        <plugin> 
         <groupId>org.codehaus.mojo</groupId> 
         <artifactId>jdepend-maven-plugin</artifactId> 
         <version>2.0-beta-2</version> 
        </plugin> 
        <plugin> 
         <groupId>org.codehaus.mojo</groupId> 
         <artifactId>cobertura-maven-plugin</artifactId> 
         <version>2.4</version> 
        </plugin> 
        <plugin> 
         <groupId>org.codehaus.mojo</groupId> 
         <artifactId>taglist-maven-plugin</artifactId> 
         <version>2.4</version> 
        </plugin> 
        <plugin> 
         <groupId>org.apache.maven.plugins</groupId> 
         <artifactId>maven-jxr-plugin</artifactId> 
         <version>2.1</version> 
        </plugin> 
        <plugin> 
         <groupId>org.apache.maven.plugins</groupId> 
         <artifactId>maven-pmd-plugin</artifactId> 
         <version>2.5</version> 
         <configuration> 
          <linkXref>true</linkXref> 
          <minimumTokens>100</minimumTokens> 
          <minimumPriority>3</minimumPriority> 
          <!-- Change minimum priority to see more or less messages --> 
          <targetJdk>1.6</targetJdk> 
         </configuration> 
        </plugin> 
       </reportPlugins> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

springContext.xml (ITS ma następujący znacznik do włączania funkcji LTW)

<context:load-time-weaver/> 
+0

Hmm, no zależność cglib ... –

Odpowiedz

12

trzeba zawierać spring-instrument.jar jako agent:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <version>2.4</version> 
    <configuration> 
      <forkMode>once</forkMode> 
      <argLine> 
       -javaagent:"${settings.localRepository}/org/springframework/spring-instrument/${spring.framework.version}/spring-instrument-${spring.framework.version}.jar" 
     </argLine> 
      <useSystemClassloader>true</useSystemClassloader> 
    </configuration> 
</plugin> 

(zastąpić $ {spring.framework.version} i $ {settings.localRepository} ze swoimi wartościami)

i oczywiście plugin AspecJ Maven jako:

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>aspectj-maven-plugin</artifactId> 
    <version>1.3</version> 
    <executions> 
     <execution> 
      <configuration> 
       <source>1.6</source> 
       <target>1.6</target> 
      </configuration>      
      <goals> 
       <goal>compile</goal>  <!-- use this goal to weave all your main classes --> 
       <goal>test-compile</goal> <!-- use this goal to weave all your test classes --> 
      </goals> 
     </execution> 
    </executions> 
</plugin> 

dla AspectJ do pracy, to trzeba także dodać zależność aspectjrt:

<dependency> 
    <groupId>org.aspectj</groupId> 
    <artifactId>aspectjrt</artifactId> 
    <version>${aspectjrt.version}</version> 
</dependency> 

Oto pełna przykładów, w jaki sposób run AspectJ tests with Maven

+0

Hi Dzięki, problem jest rozwiązany. Przypadkowo robiłem ustawienie na wtyczce-raporcie murowanym i nie zawierałem wtyczki surefire. Po tym włączeniu mogę bez żadnych problemów uruchomić wszystkie moje testy. –

Powiązane problemy