将AspectJ项目导出为jar并在另一个应用程序中使用

时间:2017-03-06 14:53:18

标签: annotations aspectj aspectj-maven-plugin

我在Mavenised项目中写了一个Aspect。 PROJECT_A

现在我想在PROJECT_B中使用PROJECT_A.jar,它是非公认的。

在PROJECT_B中,我想使用我在PROJECT_A中使用方面编写的注释。

我尝试使用aspectJ插件导出PROJECT_A.jar,如下所示。但是当我在PROJECT_B中使用它时 - 我的注释不能按预期工作。

  <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>aspectj-maven-plugin</artifactId>
                    <version>1.4</version>
                    <executions>
                        <execution>
                            <goals>
                                <goal>compile</goal>
                                <goal>test-compile</goal>
                            </goals>
                        </execution>
                    </executions>
                    <configuration>
                        <source>1.7</source>
                        <target>1.7</target>
                    </configuration>
                </plugin>

我是使用AspectJ的新手,我没有在PROJECT_B中没有maven的情况下如何做到这一点。

请帮忙,感谢任何帮助:)

1 个答案:

答案 0 :(得分:0)

首先,升级到AspectJ Maven 1.9。

然后mavenise项目B!这使您可以使用AspectJ Maven插件将方面编织到您的其他模块中,即使在编译之后也是如此。这称为二元编织。请阅读plugin documentation,特别是有关参数WebClient client = WebClient.create("http://example.com"); .... @GetMapping(value = "/account") public Mono<String> account() { Mono<Account> account = client.get() .url("/accounts/{id}", 1L) .accept(APPLICATION_JSON) .exchange(request) .then(response -> response.bodyToMono(Account.class)); return account; } aspectLibraries的信息,具体取决于您要采用的方法。

或者,使用weaveDependencies启动JVM并使用load-time weaving (LTW)的AspectJ编织代理。但是不要忘记通过META-INF/aop.xml提供LTW配置。

无论哪种方式,你都有选择。但两者都要求您阅读一些文档或至少搜索此站点以获取示例。