【问题标题】:export AspectJ project as jar and use in another application将 AspectJ 项目导出为 jar 并在另一个应用程序中使用
【发布时间】:2017-03-06 14:53:17
【问题描述】:

我正在 Mavenised 项目中编写一个方面。 PROJECT_A

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

在 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,我不知道如何使用它。

请帮助,任何帮助表示赞赏:)

【问题讨论】:

    标签: annotations aspectj aspectj-maven-plugin


    【解决方案1】:

    首先,升级到 AspectJ Maven 1.9。

    然后mavenise项目B!这使您可以使用 AspectJ Maven 插件将方面编织到您的其他模块中,即使在编译之后也是如此。这称为二元编织。请阅读plugin documentation,尤其是有关参数aspectLibrariesweaveDependencies 的信息,具体取决于您要采用的方法。

    或者,使用-javaagent:/path/to/aspwctjweaver.jar 启动您的JVM,并为load-time weaving (LTW) 使用AspectJ 织入代理。但不要忘记通过META-INF/aop.xml 提供 LTW 配置。

    无论哪种方式,您都有选择。但两者都需要您阅读一些文档或至少在此网站上搜索示例。

    【讨论】:

    • 你好@kriegaex,我正在尝试在几个项目中使用这个 jar,如果我的 PROJECT_A 和 PROJECT_B 都不是 mavenized ,我不能按照你的建议去做项目,
    • 使用我提到的替代方案。这就是我提到这两种选择的原因。阅读完整的答案总是有帮助的。哦,顺便说一句,AspectJ 编译或编织也可以集成到其他构建工具中,例如 Gradle 或 Ant。这同样适用于从 IntelliJ IDEA 或 Eclipse 等 IDE 构建。但是,嘿,如果你想使用一个新工具,但不改变你的构建过程中的任何东西,你期望什么?您想要该工具,但不愿意调整您的构建。这没有意义。
    猜你喜欢
    • 1970-01-01
    • 2017-03-15
    • 1970-01-01
    • 2019-06-19
    • 1970-01-01
    • 2020-08-25
    • 1970-01-01
    • 2016-07-09
    • 2014-03-10
    相关资源
    最近更新 更多