Introduce SplitProjectTask

This task, available for all jvm projects in the build, can be used to split a project into a separate project.
The task takes as input a list of classes that should be moved to the new project. It then scans the compiled classes
from the project-to-split for all the classes that the given names depends on, collecting all classes to be moved. Then,
it determines what dependencies the new project needs by analyzing the compile classpath. Finally, it moves the class files,
writes a build file, and moves any test files directly associated with the moved production classes.

While not perfect, this task makes it much easier to break apart projects. There are likely some improvements that can be made
to the asm class visitor to better align its api/implementation separation with the dependency analysis plugin, as some of the classes
it considers api classes the dependency analysis plugin considered implementation classes.
8 files changed
tree: d688fa3570e1f5c25410c93dc4a1b780bd06fe12
  1. .github/
  2. .idea/
  3. .teamcity/
  4. architecture/
  5. build-logic/
  6. build-logic-commons/
  7. build-logic-settings/
  8. contributing/
  9. gradle/
  10. images/
  11. packaging/
  12. platforms/
  13. subprojects/
  14. testing/
  15. .editorconfig
  16. .gitattributes
  17. .gitignore
  18. .mailmap
  19. build.gradle.kts
  20. CONTRIBUTING.md
  21. gradle.properties
  22. gradlew
  23. gradlew.bat
  24. KEYS.md
  25. LICENSE
  26. README.md
  27. released-versions.json
  28. settings.gradle.kts
  29. version.txt
README.md

🐘 Gradle Build Tool

Gradle is a highly scalable build automation tool designed to handle everything from large, multi-project enterprise builds to quick development tasks across various languages. Gradle’s modular, performance-oriented architecture seamlessly integrates with development environments, making it a go-to solution for building, testing, and deploying applications on Java, Kotlin, Scala, Android, Groovy, C++, and Swift.

For a comprehensive overview, please visit the official Gradle project homepage.


πŸš€ Getting Started

Starting with Gradle is easy with these essential resources. Follow these to install Gradle, set up initial projects, and explore supported platforms:

πŸ“˜ Explore Gradle’s full array of resources through the Gradle Documentation.


πŸ›  Seamless IDE & CI Integration

Gradle is built to work smoothly with a variety of Integrated Development Environments (IDEs) and Continuous Integration (CI) systems, providing extensive support for a streamlined workflow:


πŸŽ“ Learning Resources for Gradle

Kickstart your Gradle knowledge with courses, guides, and community support tailored to various experience levels:

  • DPE University Free Courses: A collection of hands-on courses for learning Gradle, complete with project-based tasks to improve real-world skills.
  • Gradle Community Resources: Discover a range of resources, tutorials, and guides to support your Gradle journey, from foundational concepts to advanced practices.

πŸ’¬ Community Support & Resources

The Gradle community offers a range of forums, documentation, and direct help to guide you through every step of your Gradle journey:

  • Documentation: The Gradle User Manual covers everything from basic to advanced configurations.
  • Community Forum: Engage with others on the Gradle Forum for discussions, tips, and best practices.
  • Community Slack: Join our Slack Channel for real-time discussions, with specialized channels like #github-integrations for integration topics.
  • Newsletter: Subscribe to the Gradle Newsletter for news, tutorials, and community highlights.

Quick Tip: New contributors to Gradle projects are encouraged to ask questions in the Slack #community-support channel.


🌱 Contributing to Gradle

  • Contribution Guide: Contribute to Gradle by submitting patches or pull requests for code or documentation improvements.
  • Code of Conduct: Gradle enforces a Code of Conduct to ensure a welcoming and supportive community for all contributors.

πŸ”— Additional Resources

To make the most out of Gradle, take advantage of these additional resources:

🌟 Stay connected with the Gradle Community and access the latest news, training, and updates via Slack, Forum, and our Newsletter.