2015-03-31 104 views
1

歡迎,Maven和AspectJ不能很好地包裝

我有包裝aspectj程序的問題。在pom.xml中使用這段代碼:

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-jar-plugin</artifactId> 
      <configuration> 
      <excludes> 
       <exclude>**/log4j.properties</exclude> 
      </excludes> 
      <archive> 
       <manifest> 
        <addClasspath>true</addClasspath> 
        <mainClass>com.mkyong.core.utils.App</mainClass> 
        <classpathPrefix>dependency-jars/</classpathPrefix> 
       </manifest> 
      </archive> 
      </configuration> 
      </plugin> 
      <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>aspectj-maven-plugin</artifactId> 
      <version>1.7</version> 
      <configuration> 
       <ajdtBuildDefFile>build-1-5.ajproperties</ajdtBuildDefFile> 
      </configuration> 
      <executions> 
       <execution> 
       <goals> 
        <goal>compile</goal> 
       </goals> 
       </execution> 
      </executions> 
      </plugin> 
      <!-- OTHER PLUGINS --> 
    </plugins> 
</build> 

使用此命令在控制檯上:

mvn aspectj:compile 
mvn exec:java 

與各方面的運行計劃好。但執行此路線:

mvn package 
java -jar target\<my-package>.jar 

沒有工作。有關信息除外:

Caused by: java.lang.ClassNotFoundException: org.aspectj.lang.Signature 

問題是什麼?

回答

0

問題是,在手動運行程序時,AspectJ Runtime aspectjrt.jar不在您的類路徑中。您應該運行的程序是這樣的:

java -cp path\to\aspectjrt.jar -jar target\<my-package>.jar 

,以避免這一點的唯一方法是使用一個插件像一瓶(依賴被裝入應用程序JAR和加載witgh一個特殊的類加載器)或Maven陰影(依賴被解壓到你的JAR中)。

<plugin> 
    <groupId>org.dstovall</groupId> 
    <artifactId>onejar-maven-plugin</artifactId> 
    <version>1.4.4</version> 
    <executions> 
     <execution> 
      <goals> 
       <goal>one-jar</goal> 
      </goals> 
     </execution> 
    </executions> 
    <configuration> 
     <onejarVersion>0.96</onejarVersion> 
     <mainClass>de.scrum_master.app.FooBar</mainClass> 
     <attachToBuild>true</attachToBuild> 
    </configuration> 
</plugin> 

<!-- (...) --> 

<pluginRepositories> 
    <pluginRepository> 
     <id>OneJAR googlecode.com</id> 
     <url>http://onejar-maven-plugin.googlecode.com/svn/mavenrepo</url> 
    </pluginRepository> 
</pluginRepositories> 

然後,你可以忘掉把所有依賴的類路徑和使用:

java -jar target\<my-package>.one-jar.jar 
相關問題