【问题标题】:Build task for AspectJ fails due to undefined name由于未定义的名称,AspectJ 的构建任务失败
【发布时间】:2015-06-16 01:19:16
【问题描述】:

我在创建要为 AspectJ 编译的 ant 任务时遇到问题。这似乎是一个命名空间问题,ant 无法识别任务名称“aspectj:iajc”。知道为什么会这样吗?

错误信息:

build.xml:122: Problem: failed to create task or type antlib:org.aspectj:iajc 
Cause: The name is undefined.

将 jars 添加到 WEB-INF/lib 目录:

  • aspectjrt-1.8.5.jar
  • aspectjtools-1.6.2.jar
  • aspectjweaver-1.8.5.jar

为项目元素添加了命名空间:

<project xmlns:aspectj="antlib:org.aspectj">

添加了iajc任务来编译目标:

<target name="compile">
...
    <aspectj:iajc source="1.6" sourceroots="../src" destDir="./${final.dir}/WEB-INF/classes/">
        <classpath>
            <fileset dir="./lib/"> 
                <include name="**/*.jar" /> 
            </fileset>      
        </classpath>
    </aspectj:iajc>
...
</target>

我尝试将 iajc 任务中的源参数更改为“1.8”以匹配 jrt 包,但得到了相同的错误消息。

参考:

【问题讨论】:

  • 我知道这不是您要寻找的答案,但这里有一个提议:如果您可以选择切换到 Maven,我可以为您提供帮助。我经常将 AspectJ 与 Maven 一起使用,但从未使用过 Ant,因为我不喜欢脚本化构建。
  • 谢谢,但我能够与 Ivy 一起使用它。
  • 那么请不要让问题悬而未决,而是自己回答并接受自己的回答,以便结束问题并帮助处于相同情况的其他人,或者完全删除问题。跨度>

标签: java ant aspectj


【解决方案1】:

我仍然不知道我以前的方法有什么问题,但我能够使用 taskdef 使其工作,它允许您指定 aspectj jar 文件的路径。

<taskdef resource="org/aspectj/tools/ant/taskdefs/aspectjTaskdefs.properties">
    <classpath>
        <pathelement location="./lib/aspectjtools-1.8.5.jar"/>
    </classpath>
</taskdef>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-13
    • 2021-10-20
    • 1970-01-01
    • 1970-01-01
    • 2019-07-23
    • 2020-06-30
    • 1970-01-01
    相关资源
    最近更新 更多