From 3e0524e928db98a4c36ab51dc00daef71fbdfb0b Mon Sep 17 00:00:00 2001 From: wisberg Date: Wed, 6 Aug 2003 09:42:08 +0000 Subject: modular build questions, unauthoritative answers --- docs/faq/faq.xml | 239 +++++++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 186 insertions(+), 53 deletions(-) (limited to 'docs') diff --git a/docs/faq/faq.xml b/docs/faq/faq.xml index 22be7f32a..539f89edc 100644 --- a/docs/faq/faq.xml +++ b/docs/faq/faq.xml @@ -23,7 +23,7 @@ 2003 Contributors. All rights reserved. - Last updated July 15, 2003. + Last updated August 6, 2003. This FAQ covers AspectJ versions 1.0 and 1.1. @@ -1509,7 +1509,9 @@ aspect PublicErrorLogging { If this is too slow, then you can try to make reasonable divisions between sets of source files whose aspects do not interact to achieve a shorter compile cycle (particularly for development - aspects). However, if you get any problems + aspects). If you have aspects that apply to different modules, + you can try compiling them into a binary form and using them + to weave each module. However, if you get any problems or if you wish to run tests or do a release, you should recompile the entire system. @@ -1869,6 +1871,66 @@ ajc -bootclasspath c:\jdk1.2\jre\lib\rt.jar \ See + + + What plans are there to support my IDE? + + + + The AspectJ team directly provided components for JBuilder, Forte, + and Emacs and supported the open-source AspectJ plugin project + at http://eclipse.org/ajdt + which uses the AJDE API support for IDE's. + Supporting new IDE's is a matter of building on the AJDE API's, + mostly likely adopting one of the existing open-source IDE + extensions as a design template. + Here are the IDE's where we know people have expressed interest, + so interested developer may want to join with others in their + developer communities to build the integration. + + + + IDEA/IntelliJ has an enthusiastic community and + the developers are working on an extensibility API + - http://intellij.com + + + + jEdit comes from a very active open-source community. + + + + Oracle JDeveloper has an Extension SDK unfamiliar to us. + + + + Some have suggested Codeguide from Omnicore + http://www.omnicore.com/ + + + + + + For questions on AJDE, join the developer's list + aspectj-dev@eclipse.org. + For questions on the current IDE integrations, contact those projects. + + + + + + Can I port AJDE support to my development environment? + + + Yes. The core AJDE API is extensible and the source code is + available for download. Start by studying the sources + for the existing IDE support linked off the AspectJ site + http://eclipse.org/aspectj. + + + @@ -1917,61 +1979,120 @@ ajc -bootclasspath c:\jdk1.2\jre\lib\rt.jar \ - - What plans are there to support my IDE? - - + - The AspectJ team directly provided components for JBuilder, Forte, - and Emacs and supported the open-source AspectJ plugin project - at http://eclipse.org/ajdt - which uses the AJDE API support for IDE's. - Supporting new IDE's is a matter of building on the AJDE API's, - mostly likely adopting one of the existing open-source IDE - extensions as a design template. - Here are the IDE's where we know people have expressed interest, - so interested developer may want to join with others in their - developer communities to build the integration. - - - - IDEA/IntelliJ has an enthusiastic community and - the developers are working on an extensibility API - - http://intellij.com - - - - jEdit comes from a very active open-source community. - - - - Oracle JDeveloper has an Extension SDK unfamiliar to us. - - - - Some have suggested Codeguide from Omnicore - http://www.omnicore.com/ - - - + We compile module jars and then assemble them. Can we continue this with AspectJ? + + - For questions on AJDE, join the developer's list - aspectj-dev@eclipse.org. - For questions on the current IDE integrations, contact those projects. - + Aspects apply to everything in a namespace, as if everything is + compiled together. + Sometimes you can break the build down into separate steps without breaking + this model, but we haven't stated exactly where it could break + because it depends on the interactions between all types. + You can try the approaches below, but remember to rebuild + everything in one go if there are problems. + + + The simplest scenario is when the aspects apply to all modules + and the modules compile without the aspects. In that case, + weaving in the aspects is just the final assembly step for + the build. + + + Next is the case where the aspects make changes to a common + library that are visible to other clients, which themselves + are otherwise unaffected by the aspects. In this case, the + common library can be built using ajc, and used on the + classpath for the module builds: + + + + + + Combining these last two, + there's the case where a common set of aspects should + affect two or more modules that are in a dependency relationship + to one another. It should work to reuse the aspects + in binary form for each compile, in dependency order: + + + + + + + If two modules are visibly affected by aspects and + mutually-dependent, the only thing to do is compile + them together. + + + It's safest to assume that all aspects can affect all + types in a namespace; using build boundaries to effect + crosscutting limits causes a dangerous dependency on + the build process and might cause problems. + - - Can I port AJDE support to my development environment? + + We use modules and would like to use incremental compilation. + Is that possible? + - Yes. The core AJDE API is extensible and the source code is - available for download. Start by studying the sources - for the existing IDE support. + + Just incrementally-compile the whole system. + Specify to ajc the modules as multiple source roots + (or input jars if you are weaving libraries). + + + In Eclipse's AJDT, you can create a top-level project with symbolic + links out to the sources: + + + + + + Then everything is part of one huge incremental compile. Also, you + can close this master project and work the others using the Java + compiler or AJDT. + + + The links make incremental development possible without affecting + the modularized Ant builds. (Our practice runs along those lines.) @@ -2537,11 +2658,21 @@ aspect MyMarker extends MarkerExample { Some libraries are distributed in the release under the - examples folder in the distribution. - If you develop a library and want to make it available to - other users, join the users mailing list + examples folder in the distribution. + These are "libraries" in the sense that they are reusable, + but they are delivered in source form. + If you develop such a library and want to make it available to + other users, feel to send it to the users mailing list aspectj-users@eclipse.org. + In AspectJ 1.1, ajc supports binary aspects, so + you can distribute aspect libraries without distributing the + source. For more information, see the + -aspectpath + option in the + + Reference for ajc. + @@ -4005,7 +4136,7 @@ vmparam -Xmx384m This revision had still - more 1.1-driven changes and updated some process questions. + more 1.1-driven changes and updated some process and build questions. Entries changed since the earlier June, 2003 version: @@ -4017,6 +4148,8 @@ vmparam -Xmx384m + + -- cgit v1.2.3