【问题标题】:AspectJ compiler (ajc): How to overwrite woven classes within inpath?AspectJ 编译器 (ajc):如何覆盖 inpath 中的编织类?
【发布时间】:2014-01-21 11:39:52
【问题描述】:

我有一个使用ant 构建的项目源的模块化布局。在使用 javac 构建项目后,我正在运行(针对特定模块)iajc 任务,以建议分散在 inpath 上的二进制类,这些类构成来自我的依赖模块的二进制输出目录:

<iajc destDir="${dest.dir}" >
    <inpath refid="modules.binaries.path" />
    <classpath>
        <path refid="module.classpath" />
    </classpath>
    <aspectpath refid="aspects.path" />
</iajc>

问题在于,像这样所有二进制文件的编织输出都合并到${dest.dir},这意味着我因此失去了二进制文件的模块化结构。但我需要它保持在运行时。完全不指定 destDir 没有任何效果。有什么方法可以让编织类留在它们在inpath 中覆盖其原件(未编织)的位置? 感谢您对此提供任何帮助或提示。

【问题讨论】:

    标签: java ant aspectj


    【解决方案1】:

    我最终迭代了组成依赖模块的二进制目录的路径元素。 inpathdestDir 在每次迭代中都被设置为等于当前路径元素:

    <for param="path.item" >
       <path refid="modules.binaries.path" />
       <sequential>
          <iajc destDir="@{path.item}" >
          <inpath>
             <pathelement location="@{path.item}" />
          </inpath>
          <classpath>
             <path refid="module.classpath" />
          </classpath>
          <aspectpath refid="aspects.path" />
          </iajc>
       </sequential>
    </for>
    

    通过这种方式,通过覆盖原始版本来建议类在其位置上。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-18
      • 2012-11-21
      相关资源
      最近更新 更多