2016-03-23 8 views
1

Ich bin immer noch Anfänger in Java. Ich würde gern ein einfaches Maven-Projekt erstellen und AspectJ implementieren, um einige Dinge zu überwachen. Ich folgte diesem tutorial und diesem tutorial aber alles deutet darauf hin, Spring im Maven zu verwenden, was einige Sachen im Projekt komplizieren wird. Haben Sie Vorschläge zur Problemumgehung? Ich habe bereits AspectJ Maven Plugin in der pom.xml, aber es funktioniert nicht.Verwenden von AspectJ Ohne Frühling auf Maven

Danke

ps. Dies sind die Beispielcodes, die ich bekommen möchte.

MainApp.java

package tester; 

public class MainApp { 

    public static void main(String[] args) { 
     // TODO Auto-generated method stub 

     HelloWorld a = new HelloWorld(); 
     a.printHello(); 
    } 
} 

HelloWorld.java

package tester; 

public class HelloWorld { 
    private String name; 

    public void setName(String name) { 
     this.name = name; 
    } 

    public void printHello() { 
     System.out.println("Spring 3 : Hello ! " + name); 
    }} 

TestAspect.java

package tester; 

import org.aspectj.lang.annotation.Aspect; 
import org.aspectj.lang.annotation.Pointcut; 
import org.aspectj.lang.annotation.Before; 
import org.aspectj.lang.annotation.After; 
import org.aspectj.lang.annotation.AfterThrowing; 
import org.aspectj.lang.annotation.AfterReturning; 
import org.aspectj.lang.annotation.Around; 


@Aspect 
public class TestAspect { 

// @Pointcut("execution(* /HelloSpring/src/main/java/tester/HelloWorld.setName(..))") 
// private void testing(){ 
//  
// } 

    @Before("execution(* tester.HelloWorld.printHello(..))") 
    public void testBefore2(){ 
     System.out.println("yoo2"); 
    } 


    @Before("execution(* tester.HelloWorld.setName(String))") 
    public void testBefore(){ 
     System.out.println("yoo"); 
    } 

} 

pom.xml

<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/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>test.spring</groupId> 
    <artifactId>HelloSpring</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 

    <properties> 
    <spring.version>4.2.5.RELEASE</spring.version> 
    </properties> 

    <dependencies> 

     <!-- Spring 3 dependencies --> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-core</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-beans</artifactId> 
      <version>${spring.version}</version> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-aop</artifactId> 
      <version>4.2.5.RELEASE</version> 
     </dependency> 


     <dependency> 
      <groupId>org.aspectj</groupId> 
      <artifactId>aspectjrt</artifactId> 
      <version>1.8.7</version> 
     </dependency> 
     <dependency> 
      <groupId>org.aspectj</groupId> 
      <artifactId>aspectjweaver</artifactId> 
      <version>1.8.8</version> 
     </dependency> 
    </dependencies> 


    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.codehaus.mojo</groupId> 
       <artifactId>aspectj-maven-plugin</artifactId> 
       <version>1.8</version> 
       <dependencies> 
        <dependency> 
         <groupId>org.aspectj</groupId> 
         <artifactId>aspectjtools</artifactId> 
         <version>${aspectj.version}</version> 
        </dependency> 
       </dependencies> 
      </plugin> 
      <plugin> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>${maven.compiler.plugin.version}</version> 
       <configuration> 
        <source>${java.version}</source> 
        <target>${java.version}</target> 
       </configuration> 
      </plugin> 

     </plugins> 
    </build> 

</project> 

Antwort

0

Hier ist ein besser passender Pom, für mich funktioniert es mit dem aktuellen Code.

<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/xsd/maven-4.0.0.xsd"> 
<modelVersion>4.0.0</modelVersion> 
<groupId>test.spring</groupId> 
<artifactId>HelloSpring</artifactId> 
<version>0.0.1-SNAPSHOT</version> 

<properties> 
    <maven.compiler.plugin.version>3.5.1</maven.compiler.plugin.version> 
</properties> 

<dependencies> 

    <dependency> 
     <groupId>org.aspectj</groupId> 
     <artifactId>aspectjrt</artifactId> 
     <version>1.8.7</version> 
    </dependency> 
    <dependency> 
     <groupId>org.aspectj</groupId> 
     <artifactId>aspectjweaver</artifactId> 
     <version>1.8.8</version> 
    </dependency> 
</dependencies> 


<build> 
    <plugins> 
     <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>aspectj-maven-plugin</artifactId> 
      <version>1.8</version> 
      <configuration> 
       <complianceLevel>1.8</complianceLevel> 
       <source>1.8</source> 
       <target>1.8</target> 
      </configuration> 
     </plugin> 
     <plugin> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>${maven.compiler.plugin.version}</version> 
      <configuration> 
       <source>1.8</source> 
       <target>1.8</target> 
      </configuration> 
     </plugin> 

    </plugins> 
</build> 

+0

Ich habe versucht, Ihre POM-Konfiguration mit, aber es funktioniert immer noch nicht. Hast du eine Ahnung warum? Denkst du, ich muss das normale Maven-Projekt in Maven AspectJ Projekt konvertieren mit Rechtsklick - Konfigurieren - Konvertieren zu AspectJ Project? –

+0

Welche IDE verwenden Sie? Haben Sie versucht, es über die Konsole nur mit mvn clean installieren? Ich benutze IntelliJ und ich habe versucht sowohl von der Konsole und von IntelliJ und ich kann Ihren Code mit meinem POM laufen lassen. – Nosfert

+0

Ich benutze Eclipse Mars und habe es nicht aus der Konsole versucht, da es einige Probleme damit hat. Aber ich habe schon versucht, es mit sauberen Installationsargumenten zu erstellen, aber AspectJ wird nicht erfasst. –

1

Sie sollten "Ausführung" Tag als auch hinzufügen:

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>aspectj-maven-plugin</artifactId> 
    <version>${aspectj-maven-plugin.version}</version> 
    <configuration> 
     <complianceLevel>1.8</complianceLevel> 
     <source>1.8</source> 
     <target>1.8</target> 
    </configuration> 
    <executions> 
     <execution> 
      <phase>process-sources</phase> 
      <goals> 
       <goal>compile</goal> 
       <goal>test-compile</goal> 
      </goals> 
     </execution> 
    </executions> 
</plugin> 
<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>${maven.compiler.plugin.version}</version> 
    <configuration> 
     <source>1.8</source> 
     <target>1.8</target> 
    </configuration> 
</plugin> 
Verwandte Themen