Planned build system API changes

Listing of planned build system API changes for next release.

Freeform module split

Currently the freeform project type is implemented as a single module, though domain-specific metadata is split into three schemas: general, Java-specific, and web-specific. It is desirable to introduce SPIs to permit the domain-specific functionality to be factored into physically distinct modules that could be independently maintained. It will also permit full J2EE support to add its own hooks.

Issue:
49634 Modularity of freeform project type

Freeform project file format change

The format of freeform project file (project.xml) needs to be extend to capture additional information about project. This information is for example where are test sources, where is project's Javadoc generated, etc. and it is needed to be able  to provide correct implementation of some project queries like UnitTestForSourceQueryImplementation, JavadocForBinaryQueryImplementation, etc. The change would define new schema http://www.netbeans.org/ns/freeform-project/2 which is extended version of existing http://www.netbeans.org/ns/freeform-project/1 schema. All freeform projects would be affected, that is Java Project with existing Ant script as well as Web project with existing Ant script. Old projects would be automatically converted to new version during the project open.

Issues:
47835 No UnitTestForSourceQueryImplementation in freeform projects
49677 No JavadocForBinaryQueryImplementation in freeform project
48079 Permit multiple context's in ide-actions/action with differently formatted properties
47498 Provide a way to directly specify source and Javadoc information for CP entries in a freeform project

Change of J2SE project file format and its list of properties

The format of J2SE project file (project.xml) and list of project properties need to be extended in order to implement multiple source roots in one compilation unit. Similarly as in Freeform project case new schema will be published and old projects will be upgraded during the project opening. This affects Java Application, Java Class Library and Java Project with Existing Sources projects. Besides multiple source roots there are other smaller issues which needs addition of some project properties.

Issues:
46354 Support multiple source directories in the primary compilation unit of a j2seproject
49026 Permit user to specify ignore list for javac
50092 Foreign project cannot set dependency on freeform project artifact if build.xml not inside projdir
50039 Project's "Creating Javadoc" property page needs an option and a field for specifying the overview comment file.

Publish more Projects API

There is lot of code which was copy&pasted from J2SE project to other project type implementations. We would like to factor out some of the code and made it available as regular API.

Issues:
49647 Support SPI: show a project properties dialog with a list of panes
49648 Support SPI: read/write properties to project/private.properties
49653 Make proper API from ProjectClassPathExtender
48618 Export PackageListView methods as part of PackageView API

Miscellaneous small planned API changes


AntArtifact

Currently permit only one build artifact what limits Freeform projects which can produce arbitrary number of build artifacts per one compilation unit. AntArtrifact should also have optional properties for customization of target execution.
Issues:
47788 AntArtifact should provide optional properties for target execution
50484 AntArtifact should permit multiple build artifacts

ReferenceHelper

Cannot create relative reference to non-project basedir. Needed for creating relative links to files lying on external source roots.
Issue:
49550 Make ReferencesHelper.createForeignFileReference produce relative links based on properties

ActionProvider

Currently cannot fire changes in the set of recognized actions. May require new extension interface. Expected to be implemented by freeform and used as a client by projectui.
Issue:
47160 Main project action enablement status not changed after changing action bindings in freeform project

Classpath

There are issues which cannot be resolved without extending Classpath API. For example classpath is not refreshed when file is moved to different compilation unit.
Issues:
46791 Classpath ignored if defined for source root created after root is first used
49371 Enormous monolithic source roots too slow to work on

Others

Add helper API to find Java package for the given Java file. Will be used for example from wizards.
Issue:
45108 New Project wizard, whenever asking for an existing Java package root, should try to verify package structure