* It is written as a monolith that configures subprojects instead of each project configuring itself.
* It couples inner-dependencies of any module with other modules (for example, the SWT dependencies are configured on all other modules too).
* The build file contains configuration that should be in the settings file.
* It contains obsolete functionality, such as cross-compilation, and possibly obsolete dependencies, such as Libav.
* It contains non-build-related tasks, such as publication.
A multistep process is required to bring the build process up to date. [~kcr] suggested these steps:
"""
1. Remove the logic and support for multiple compile targets (the COMPILE_TARGETS and compileTargets variables and all occurrences of the "compileTargets { t -> ... }" loops
2. Split build.gradle into multiple pieces
3. Use standard gradle plugins instead of the custom groovy scripts for native compilation
1 should ideally be done before 2 (or at the same time). 3 is independent.
Another thing to consider:
4. Remove or refactor the support for building JavaFX modules to be included with the JDK -- the code qualified by "HAS_JAVAFX_MODULES". This might still be in use by some vendors, so would need to be discussed first.
"""
Adding to these:
* Offload configuration from the build file to the settings file
* Remove unused dependencies and properties
* Unify the buildSrc scripts into their respective modules (for example, CompileHLSLTask.groovy is only relevant for the graphics module). buildSrc is an old convention folder that is not required anymore.
* Possibly rearrange (or just create) tasks to give more granular control over the build and reduce the amount of configuration needed to run common tasks by baking them in for convenience.
Splitting of the monolithic build file should be done with convention plugins. These encapsulate shared code that can then be applied to subprojects as needed.
This issue serves as an umbrella for issues related to the Gradle build process. It serves mainly the reweite/split effort outlined above, but also accumulates issues that were already reported and can be fixed (at least partially) during this effort.
- is blocked by
-
JDK-8307082 Build path is recorded in JavaFX Controls module
- Open
-
JDK-8087537 Build scripts should only use JDK_HOME, not JAVA_HOME
- Open
-
JDK-8089054 Build should check for GL and Xxf86vm packages on Linux
- Open
-
JDK-8090157 JNI headers should be re-generated when a .java file changes
- Open
-
JDK-8152386 Add gradle project property to enable debug info generation
- Open
-
JDK-8172236 Improve gradle incremental build performance
- Open
-
JDK-8179462 Remove obsolete -XDignore.symbol.file flag from FX javadoc build
- Open
-
JDK-8200704 Cannot disable javafx.web in armv6hf cross compile
- Open
-
JDK-8292506 Eliminate duplicate build logic in build gradle
- Open
-
JDK-8300697 JavaFX build fails when using a boot JDK that includes javafx.* modules
- Open
-
JDK-8279061 Remove references to obsolete libjfxmedia_qtkit library from build.gradle
- Open
-
JDK-8300700 Several of the comments in build.gradle are outdated and confusing
- Open
-
JDK-8342733 Remove references to compiler flags /D_STATIC_CPPLIB and /D_DISABLE_DEPRECATE_STATIC_CPPLIB in win.gradle
- Open
-
JDK-8170591 Modification of single java file in javafx.web causes recompilation of all other files
- In Progress
-
JDK-8089942 OpenJFX fails to build native webkit code
- Closed
-
JDK-8158109 Compilation error in FX media native code with VS 2010
- Closed
-
JDK-8090370 Investigate impact of compiler flags on performance
- Open
-
JDK-8090734 Need verbose option for unit tests for Hudson builds
- Open
-
JDK-8344729 Remove support for multiple compile targets from build.gradle
- Open
-
JDK-8090896 Allow skipping apps build
- Open
-
JDK-8091664 Gradle: run tests from the bottom up
- Open
-
JDK-8092193 Gradle: VersionInfo.java must be regenerated each time
- Open
-
JDK-8092279 Implement flag to avoid building native parts and update the build instructions in the wiki
- Open
-
JDK-8276170 Create Sources when publishing to Maven
- Open
-
JDK-8296441 Build and run manual tests from gradle
- Open
-
JDK-8333146 Move maven publication logic from build.gradle
- Open
-
JDK-8336002 Support gradle --parallel option
- Open
-
JDK-8344906 Simplify Java version parsing in the build file
- Resolved
-
JDK-8345063 Centralize version number of the Gradle build file
- Resolved