这是我的情况:
我有一个my-project-aj-dependency
由两个 jar 模块组成的 Maven 项目:
my-project-aj-dependencyJarWithAJ
(我有一个Inter-type 声明,请参阅ahah()
方面下面的方法AppWithAj_Ahah.aj
)my-project-aj-dependencyJarWithoutAJ
我的问题是我想使用在第二个模块内的第一个模块方面定义的一些声明的方法,但可能我错过了一些东西。
我的 poms 配置如下:
Maven项目pom(my-project-aj-dependency
):
<?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">
<name>MyProjectAjDependency</name>
<modelVersion>4.0.0</modelVersion>
<groupId>com.madx</groupId>
<artifactId>my-project-aj-dependency</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<!-- <module>TestMaven-ejb</module> -->
<module>my-project-aj-dependencyJarWithAJ</module>
<module>my-project-aj-dependencyJarWithoutAJ</module>
</modules>
<properties>
<maven.compiler.target>1.7</maven.compiler.target>
<maven.compiler.source>1.7</maven.compiler.source>
<aspectj.version>1.8.9</aspectj.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.madx</groupId>
<artifactId>my-project-aj-dependencyJarWithAj</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.madx</groupId>
<artifactId>my-project-aj-dependencyJarWithoutAj</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<pluginManagement>
<plugins>
</plugins>
</pluginManagement>
</build>
</project>
Maven 模块 1 pom ( my-project-aj-dependencyJarWithAJ
):
<?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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.madx</groupId>
<artifactId>my-project-aj-dependency</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<groupId>com.madx</groupId>
<artifactId>my-project-aj-dependencyJarWithAJ</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>my-project-aj-dependencyJarWithAJ</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>1.8.9</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>${java-version}</source>
<target>${java-version}</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>install</id>
<phase>install</phase>
<goals>
<goal>sources</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<!--
Have to use version 1.2 since version 1.3 does not appear to work
with ITDs
-->
<version>1.2</version>
<dependencies>
<!--
You must use Maven 2.0.9 or above or these are ignored (see
MNG-2972)
-->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>${org.aspectj-version}</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjtools</artifactId>
<version>${org.aspectj-version}</version>
</dependency>
</dependencies>
<executions>
<execution>
<goals>
<goal>compile</goal>
<goal>test-compile</goal>
</goals>
</execution>
</executions>
<configuration>
<outxml>true</outxml>
<source>${java-version}</source>
<target>${java-version}</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
Maven 模块 2 pom ( my-project-aj-dependencyJarWithoutAJ
):
<?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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.madx</groupId>
<artifactId>my-project-aj-dependency</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<groupId>com.madx</groupId>
<artifactId>my-project-aj-dependencyJarWithoutAJ</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>my-project-aj-dependencyJarWithoutAJ</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>com.madx</groupId>
<artifactId>my-project-aj-dependencyJarWithAj</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>${java-version}</source>
<target>${java-version}</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>install</id>
<phase>install</phase>
<goals>
<goal>sources</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<!--
Have to use version 1.2 since version 1.3 does not appear to work
with ITDs
-->
<version>1.2</version>
<dependencies>
<!--
You must use Maven 2.0.9 or above or these are ignored (see
MNG-2972)
-->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>${org.aspectj-version}</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjtools</artifactId>
<version>${org.aspectj-version}</version>
</dependency>
</dependencies>
<executions>
<execution>
<goals>
<goal>compile</goal>
<goal>test-compile</goal>
</goals>
</execution>
</executions>
<configuration>
<outxml>true</outxml>
<source>${java-version}</source>
<target>${java-version}</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
在哪里AppWithAj.java
:
package org.my.project.aj.dependencyJarWithAJ;
public class AppWithAj {
public static void main( String[] args ){
System.out.println( "Hello World!" );
}
}
并且AppWithAj_Ahah.aj
是:
package org.my.project.aj.dependencyJarWithAJ;
public aspect AppWithAj_Ahah {
public String AppWithAj.ahah(){
return "Ahahahah!";
}
}
最后App.java
是:
package org.my.project.aj.dependencyJarWithoutAJ;
import org.my.project.aj.dependencyJarWithAJ.AppWithAj;
public class App {
public static void main( String[] args ) {
System.out.println( "Hello World! " + new AppWithAj().ahah());
}
}