Java HTML Other
Fetching latest commit…
Cannot retrieve the latest commit at this time.
|Failed to load latest commit information.|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Modified JDT Core for AspectJ</title> </head> <body> <h2>What is this shadows thing all about?</h2> <p>This module is 99% identical to the official jdt.core codebase from eclipse.org. The main line of this code should always be identical to the main line of the jdt.core development. Several changes are required to this module in order to make it work for aspectj. These changes are all captured as a branch from some tagged jdt.core release. At the time of this writing, the most recent jdt.core version is v_312. The needed changes for aspectj are captured in the branch aj_v_312.<p> <p>If you need to make small changes to jdt.core to support aspectj you should do that by working in the most recent aj_tag branch. Once you've made your changes, follow the steps under build the compiled jar and move it into modules so that your changes will be available to the build process and other developers.</p> <p>The reason for this weird structure is to achieve the following desired properties:</p> <ul> <li>Most people working with AspectJ should treat this code as a black box that can't be changed. Exposing it only as a .jar helps achieve this (we also include a src zip for debugging purposes). </li> <li>This code needs to periodically go through a difficult 3-way merge process. After exploring many options, I found that the most effective way to achieve this was with a cvs structure where the HEAD follows the "official" jdt core work from eclipse, and the AspectJ changes are represented as branches. This makes moving to a new eclipse release as easy as possible. The instructions for doing this are captured below.</li> <li>"experts" should be able to check out the currently active branch of org.eclipse.jdt.core from shadows into their eclipse workspace instead of the static .jar from modules. The current arrangement makes this possible without updating the dependencies.Most people working with AspectJ should treat this code as a black box that can't be changed. Exposing it only as a .jar helps achieve this (we also include a src zip for debugging purposes). </li> </ul> <h2>Moving to a new version of JDT Core</h2> <p>The following instructions are for updating to a new version of the official JDT from eclipse.org. We assume that new version is labeled as <b>TAG</b>. You should expect this process to take from 4-24 hours depending on the degree of changes that have occurred in the official JDT system since the last time this synchronization was performed.</p> <p>General advice. Set team properties to ignore whitespace and to compare actual contents of files.<p> <h3>Add the new <b>TAG</b> to the HEAD of org.aspectj/shadows</h3> <ol> <li>Check out org.aspectj/shadows from HEAD</li> <li>Use <code>ant get.tag -Dtag=<b>TAG</b></code> in this directory to overwrite contents with the desired new <b>TAG</b></li> <li>Commit those changes to head using synchronize and examining changes for plausibility</li> <li>Tag this tree with <b>TAG</b> -- matching the official JDT tree exactly</li> <li>Make a branch in the tree called aj_<b>TAG</b> off of HEAD</li> </ol> <h3>Merge the AspectJ changes into the new version of jdt.core</h3> <p>This task is where the hard work happens. The other two tasks are just book-keeping. </p> <ol> <li>Check out this new branch into an active AspectJ set of modules instead of the pre-compiled version in modules.</li> <li><b>HARD:</b> Working in this new branch, merge in the changes from the previous version. This will take some careful work by hand.</li> <li>Use the build.xml file with the <code>makeJdtDepends</code> task found in this branch of org.jdt.core to replace the jdtDepends.jar and jdtDepends-src.zip with the latest versions of the eclipse core classes from a matching eclipse binary release. </li> <li>Rerun the parser generator to make sure you have the right tables and symbol values. This should be done with the python script in org.aspectj.ajdt.core/scripts/make_parser.py. </li> <li><b>HARD:</b> Fix compile errors, and then run the full test suite and fix any problems that arise.</li> </ol> <h3>Build the compiled jar and move it into modules</h3> <ol> <li>Commit these working changes to the new branch</li> <li>Build jdtcore-for-aspectj.jar and jdtcore-for-aspectj-src.zip using the build.xml found in this branch of org.jdt.core. These files will be put in the directory above the org.eclipse.jdt.core project so they won't be deleted by the next step.</li> <li>Delete the org.eclipse.jdt.core project from your workspace (be sure you've committed)</li> <li>Check out the org.eclipse.jdt.core project from modules</li> <li>Replace the jar and zip files in this project with the ones you made above.</li> <li>Run the tests one more time, and if nothing went wrong you're done.</li> </ol> </body> </html>