2016-03-23 16 views
1

Java'da hala yeni başlıyorum. Basit bir Maven projesi oluşturmak ve bazı şeyleri izlemek için AspectJ'i uygulamak istiyorum. Bu tutorial'u ve bu tutorial'u izledim, ancak hepsi Maven'deki Spring'i kullanacak ve bu da projedeki bazı maddeleri zorlaştıracak. Geçici çözüm önerileriniz var mı? Ben zaten AspectJ Maven eklentisini pom.xml'ye koyuyorum ama işe yaramıyor.Mavenin Üzerinde Bahar Olmadan AspectJ'i Kullanma

Teşekkürler

ps. Bunlar almak istediğim örnek kodlar.

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> 

cevap

0

İşte benim için daha uygun bir pom, benim için geçerli kod ile çalışıyor. yanı

<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

Ben senin POM yapılandırmayı kullanarak denedim ama hala çalışmıyor. neden olduğu hakkında bir fikrin var mı? Normal Maven projesini Maven AspectJ projesine Right Click - Configure - AspectJ Projesine Dönüştür'ü kullanarak dönüştürmem gerektiğini düşünüyor musunuz? –

+0

Hangi IDE kullanıyorsunuz? Sadece mvn temiz yüklemeyle konsol üzerinden çalıştırmayı denediniz mi? IntelliJ kullanarak ben hem konsoldan hem de IntelliJ'den denedim ve kodunuzu POM'ım ile çalıştırabilirim. – Nosfert

+0

Eclipse Mars kullanıyorum ve bununla ilgili bazı problemleri olduğu için konsoldan denemedim. Ama ben zaten zaten AspectJ yakalanan temiz yükleme argümanları ile inşa etmeye çalıştı. –

1

ekleyebilir gerektiği "yürütme" tag:

<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>