Reputation: 10497
I'm having some trouble configuring Buildship for Eclipse the way I want. I currently have > 50 projects always open in Eclipse, but I want to move to having only the projects I am actively working on in Eclipse, and the other projects would use a Maven repository to resolve their dependency.
Lets say ProjectA (which contains a main) depends on ProjectB (a library project). If ProjectB is opened in Eclipse, I would like ProjectA to use ProjectB directly. A change in the code in ProjectB would be noticeable when running ProjectA. However, if ProjectB is closed, I would like ProjectA to use the ProjectB's JAR located in the Maven repository mentioned in the build.gradle file.
The behavior that I am talking about is detailed here.
Is there a way to do that using Buildship? Or should I use another Gradle Eclipse plugin?
Upvotes: 11
Views: 2761
Reputation: 27984
There's a new composite build support feature added in Gradle 3.1. This feature is a game changer and makes it simple to work on more than one project at once.
You can use dependency substitution rules to swap out repository dependencies with local project dependencies.
If each project is within it's own separate git/subversion repository you can use prezi pride to manage the 'pride' of projects. You could import the (dynamically generated) multi module build into buildship.
If you wanted to use the eclipse plugin instead of buildship you use the whenMerged or withXml hooks to tweak the generated .classpath
files to point to the projects within your workspace (note eclipse will now build differently to gradle command line).
Upvotes: 9
Reputation: 10497
For the sake of completion, I ended up going with the dependency substitution as suggested by Lance Java. This approach has the following advantages:
.classpath
file directly, we let the Eclipse plugin (or any other IDE plugin) handle this.However, there are some gotchas with that approach:
build.gradle
file or in a method that is called from the build.gradle
file.Upvotes: 2