将AspectJ与NetBeans平台开发集成

您是否正在使用NetBeans平台开发项目? 您愿意使用AspectJ来使用AOP吗? 您不知道如何将AspectJ编译器集成到NetBeans的内部版本中?

如果您的回答是“是”,则此帖子适合您。

我决定写这篇技术文章,是因为我在寻找该解决方案之前一直很费力,所以我想分享一下。

讲故事

以前,我不得不面对将AspectJ集成到使用NetBeans Platform源代码实现的Rich Client Application中的问题。 做出的第一个决定是在编译级别集成AspectJ,以便创建包含AOP的已编译源代码。

主要问题是,如何将此后编译与netbeans ant编译文件集成在一起。

解决方案

首先让我们确定必须修改的文件:

  1. common.xml:它位于您的NetBeans安装的线束文件夹中
  2. project.properties:包含必须用AspectJ编译的源代码的模块的

步骤1

下载AspectJ库,并将它们放在NetBeans安装的“ harness”文件夹内的文件夹中。 假设此文件夹名为:aspectj-xxx / lib。

第2步

进入包含要与AspectJ一起编译的源代码的模块,并在其project.properties文件(在重要文件中)中添加以下行:

aspectjcompiler=required

第三步

现在是时候配置common.xml文件了。 启动构建操作时,NetBeans IDE调用的ant目标实际上位于此位置。

该示例是使用NetBeans 7.3.1完成的,但对于以前或将来的更改差异很小。 修改以蓝色突出显示。

更改目标编译,如下所示:

<target name=”compile-nb-javac” depends=”init,up-to-date” unless=”is.jar.uptodate”>
<mkdir dir=”${build.classes.dir}”/>
<depend srcdir=”${src.dir}” destdir=”${build.classes.dir}” cache=”${build.dir}/depcache”>
<classpath refid=”cp”/>
</depend>
<nb-javac srcdir=”${src.dir}” destdir=”${build.classes.dir}” debug=”${build.compiler.debug}” debuglevel=”${build.compiler.debuglevel}” encoding=”UTF-8″
deprecation=”${build.compiler.deprecation}” optimize=”${build.compiler.optimize}” source=”${javac.source}” target=”${javac.target}” includeantruntime=”false”>
<classpath refid=”cp”/>
<compilerarg line=”${javac.compilerargs}”/>
<processorpath refid=”processor.cp”/>
</nb-javac>
<copy todir=”${build.classes.dir}”>
<fileset dir=”${src.dir}” excludes=”${jar-excludes}”/>
</copy>
</target>

添加一个新的目标编译 ,如下所示:

<target name=”compile” depends=”init,up-to-date” unless=”is.jar.uptodate”>
<mkdir dir=”${build.classes.dir}”/>
<depend srcdir=”${src.dir}” destdir=”${build.classes.dir}” cache=”build/depcache”>
<classpath refid=”cp”/>
</depend>
<antcall target=”compile-nb-javac” inheritAll=”true” />
<antcall target=”compile-aspectj” inheritAll=”true” />
</target>

添加新的目标compile-aspectj,如下所示:

<target name=”compile-aspectj” depends=”init,up-to-date” unless=”is.jar.uptodate” if=”aspectjcompiler”>
<property name=”cpProperty” refid=”cp”/>
<property name=”aspectj.lib.dir” location=”${harness.dir}/aspectj-x.x.x/lib”/>
<property name=”aspectjtools.jar” location=”${aspectj.lib.dir}/aspectjtools.jar”/>
<property name=”aspectjrt.jar” location=”${aspectj.lib.dir}/aspectjrt.jar”/>
<taskdef resource=”org/aspectj/tools/ant/taskdefs/aspectjTaskdefs.properties”>
<classpath>
<pathelement path=”${aspectjtools.jar}”/>
</classpath>
</taskdef>
<iajc destdir=”${build.classes.dir}” source=”${javac.source}” fork=”true”
forkclasspath=”${aspectjtools.jar}” classpath=”${aspectjrt.jar};${cpProperty}”
failonerror=”false” >
<sourceroots>
<pathelement location=”${src.dir}”/>
</sourceroots>
</iajc>
</target>

结论

现在,当您进行清理和构建时,您会看到所选模块的源代码在正常编译之后立即针对AspectJ编译器进行了编译。

您需要确保的是,方面和必须使用其进行编译的源代码都在同一模块中。

参考:在Refactoring Ideas博客上,我们的JCG合作伙伴 Marco Di Stefano 将AspectJ与NetBeans平台开发集成 。

翻译自: https://www.javacodegeeks.com/2013/10/integrate-aspectj-with-netbeans-platform-development.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/366337.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux CentOS 6.5 使用自带jdk修改环境变量

来源:https://www.cnblogs.com/zhenxiqia/p/9049290.html Linux CentOS 6.5 使用自带jdk修改环境变量 首先声明&#xff0c;默认jdk指我们安装完CentOS后系统自带jdk&#xff0c;自己下载安装的jdk只需要下载&#xff0c;解压即可&#xff0c;之后步骤与此文一致 1.查看我们默认…

第二阶段冲刺10

基本的代码已经编写完成&#xff0c;游戏的功能已经完善&#xff0c;基本上已经是一个合格的软件了&#xff0c;这次为期10天的冲刺很充实&#xff0c;我们切实的完善了软件&#xff0c;学会了很多&#xff0c;也可以更好的融入团队中了。团结就是力量&#xff0c;十天前我们还…

java如何找重复数字_Java如何找出数组中重复的数字

题目描述&#xff1a;找出数组中重复的数字&#xff0c;具体内容如下在一个长度为n的数组里的所有数字都在 0~n-1的范围内。数组中某些数字是重复的&#xff0c;但不知道有几个数字是重复的&#xff0c;也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。例如&…

页面中添加锚点的几种方式

本文档创建时间:2018-11-7 15:52:28 方法一,使用a标签添加 通过设置a标签的href属性,跳转到页面中指定id标签的位置a标签的href属性值前要增加#来作为标识,表示是在当前页面的内部跳转 简单的案例: 1 <html>2 <head></head>3 <body>4 <!--设置锚点…

休眠事实:有利于双向集vs列表

Hibernate是一个很棒的ORM工具&#xff0c;它极大地简化了开发&#xff0c;但是如果您想正确地使用它&#xff0c;则有很多陷阱。 在大中型项目中&#xff0c;具有双向父子关联非常常见&#xff0c;这使我们能够浏览给定关系的两端。 在控制关联的持久/合并部分时&#xff0c…

ue正则

1 删除含某些内容的行,例:含有PTTAddress 使用替换功能&#xff0c;勾选正则表达式(Regular Expressions)&#xff0c;查找为%*PTTAddress*^p&#xff0c;替换为空 2.替换大写字母为_大写字母 替换功能&#xff0c;查找为 ^([A-Z]^)&#xff0c;替换为 _^1转载于:https://www.c…

20 存储过程

一、存储过程的定义 存储过程是存储在数据库目录中的一坨的声明性SQL语句。 Java&#xff0c;Python&#xff0c;PHP等应用程序可以调用存储过程。 MySQL是最受欢迎的开源RDBMS&#xff0c;被社区和企业广泛使用。 然而&#xff0c;在它发布的第一个十年期间&#xff0c;它不支…

微信小程序下拉框

微信小程序组件里没有下拉框&#xff0c;正好要用到&#xff0c;记下来以后参考 wxml代码 <view classtop><view classtop-text> 选择接收班级</view><!-- 下拉框 --><view classtop-selected bindtapbindShowMsg><text>{{grade_name}}&l…

int最大值java_Java 中一个int型数组的求最大值最小值 | 学步园

小友今日看单元测试&#xff0c;发现的一个测试用例的代码。而测试的是某个类的最大值&#xff0c;最小值方法。在此把测试类发上来。保留此地&#xff0c;如有人对此有兴趣&#xff0c;看以看下。闲话少说&#xff1a;public class MaxMinTool {public static int getMax(int[…

使用Maven实施自定义JSF 2.0组件

前一段时间&#xff0c;我编写了自己的定制JSF组件。 但是在那个时候&#xff0c;JSF 1.0仍然是最新的&#xff0c;并且该项目没有使用maven作为构建系统。 因此&#xff0c;我一直想用maven编写一个自定义JSF2组件。 因此&#xff0c;让我们开始&#xff1a; 首先&#xff0c…

python2.7.5-虚拟环境搭建

virtualenv可以搭建虚拟且独立的python运行环境, 使得单个项目的运行环境与其它项目独立起来. virtualenv本质上是个python包, 使用pip安装: pip install virtualenv 在新建工作目录下创建虚拟环境: ~$virtualenv TestEnv 默认情况下, 虚拟环境中不包括系统的site-packages, 若…

CSS 高度(css height)

DIV CSS height高度知识教程篇 DIV CSS高度简介这里的CSS高度是指通过CSS来控制设置对象的高度。使用CSS属性单词height。单位可以使用PX&#xff0c;em等常用使用PX&#xff08;像素&#xff09;为html单位。 height高度目录height高度语法高度用法html原始高度设置css高度hei…

fst java_java快速序列化库FST

FST fast-serialization 是重新实现的 Java 快速对象序列化的开发包。序列化速度更快(2-10倍)、体积更小&#xff0c;而且兼容 JDK 原生的序列化。要求 JDK 1.7 支持。Maven&#xff1a;12 de.ruedigermoeller3 fst4 1.365示例代码&#xff1a;01// ! reuse this Object, it ca…

HOW-TO:带有Spring MVC的Tomcat中的自定义错误页面

默认的Tomcat错误页面看起来很可怕。 此外&#xff0c;它们可能会公开有价值的信息&#xff0c;包括服务器版本和异常堆栈跟踪。 Servlet规范提供了一种通过web.xml配置异常行为的方法。 可以配置对特定Java异常的响应&#xff0c;也可以配置对选定的Http响应代码的响应。 err…

第三代酷睿i3处理器_轻薄本CPU谁更强?英特尔21款低功耗处理器大排行!

点击上电脑爱好者关注我们对智能手机而言&#xff0c;其搭载的SoC是衡量性能强弱的唯一准绳&#xff0c;因为一颗SoC芯片内就集成了CPU(处理器)、GPU(显卡&#xff0c;包括集成的核显和独显)、ISP(影像处理器)和Modem(调制解调器)等模块&#xff0c;只要掌握了SoC的强弱关系&am…

**优化--后端**: 计数缓存counter_cache; rack-mini-profiler(2300) ; bullet(5000✨):侦测N+1query...

rack-mini-profiler 这个 gem,可以永远显示网页的加载时间。&#xff08;2300✨&#xff09;开发环境和产品环境都可以用。&#xff08;生成非常详细的报告&#xff09; development环境,直接使用gem rack-mini-profilerproduction环境&#xff0c;1. gem rack-mini-profiler,…

python学习日记(匿名函数)

匿名函数 简介 匿名函数&#xff1a;为了解决那些功能很简单的需求而设计的一句话函数。 python 使用 lambda 来创建匿名函数。 所谓匿名&#xff0c;意即不再使用 def 语句这样标准的形式定义一个函数。 1 lambda 只是一个表达式&#xff0c;函数体比 def 简单很多。 2 lambda…

列表相关元素及其属性

HTML5保留了如下几个列表相关元素&#xff1a;无序列表<ul>、有序列表<ol>、自定义列表<dl> 1、<ul>&#xff1a;定义无序列表&#xff0c;可以指定id、style、class等属性&#xff0c;还可以指定onclick等事件属性。 2、<ol>&#xff1a;定义有…

唯一的hashCodes不足以避免冲突

有一个常见的误解&#xff0c;即如果您具有唯一的hashCode&#xff08;&#xff09;&#xff0c;则不会发生冲突。 虽然唯一或几乎唯一的hashCodes很好&#xff0c;但这还不是故事的结局。 问题在于HashMap的大小不是无限的&#xff08;或大小至少为2 ^ 32&#xff09;&#x…

Spring Boot使用AOP实现拦截某个方法

1、引入.jarl文件依赖 <!-- Spring Boot Web 依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><!-- 从依赖信息里移除 Tomcat配置 --><exclusions><exc…