This forum is now a read-only archive. All commenting, posting, registration services have been turned off. Those needing community support and/or wanting to ask questions should refer to the Tag/Forum map, and to http://spring.io/questions for a curated list of stackoverflow tags that Pivotal engineers, and the community, monitor.

Developing the SpringIDE & Maven

I'd like to see if anyone can point me to a reference on how the Spring Tool Suite for Eclipse is developed.

Primarily I'm interested in how a developer would set up an environment and what the gotchas are with regard to using maven as the automated build.

I've been developing under Maven now for close to 5 years and the entire Eclipse plugin platform is a bit of a mystery to me. I have been investigating using Eclipse BIRT as a reporting engine and would like to use the ODA architecture to communicate with our back end. Where I've gotten stymied is how to handle dependencies both in the Eclipse PDE development environment and then with Maven.

I'm not really sure what you're asking here. Using maven tycho to build STS is largely orthogonal to daily development of STS, but feel free to check out our github projects and see how their poms are structured.

Comment

I guess, based on your answer, that the projects are primarily developed using Eclipse treating the project as an Eclipse PDE project (not using it as a maven based project), then using the Maven Tycho plugins to do the repeatable builds external to Eclipse.

So more or less
Develop as PDE project in Eclipse (not using m2e)
=====
Write POM.xml to interpret "manifest first" using tycho and assemble the project externally.

I know I'm broad stroking this. The reason I ask is I have only a vague idea of how maven+tycho+pde all hang together and being that I've been using the STS for a couple of years now was curious what the STS team does on a daily basis for development.

I'll focus more on the tycho side of things to understand how that fits in and how it can be used in development.

I'm not really sure what you're asking here. Using maven tycho to build STS is largely orthogonal to daily development of STS, but feel free to check out our github projects and see how their poms are structured.

I guess, based on your answer, that the projects are primarily developed using Eclipse treating the project as an Eclipse PDE project (not using it as a maven based project), then using the Maven Tycho plugins to do the repeatable builds external to Eclipse.

So more or less
Develop as PDE project in Eclipse (not using m2e)
=====
Write POM.xml to interpret "manifest first" using tycho and assemble the project externally.

That is correct. The daily development is based on PDE. We use STS itself as the IDE, import the projects as existing projects from the Git repository (they are all defined as PDE projects) and so self-hosting for testing then.

Comment

Ok to sum up, the STS development is done exclusively in STS/Eclipse as a plugin project.

The tycho/maven builds are done externally on a CI system in a headless fashion.

Perfect.

Now, for my next question. How do you handle the dependencies for springframework? Do you just pull the release jars from the spring distribution and augment them to OSGi bundles? And, regardless of how that is done, how are those bundles made available to the development environment?

If this really isn't an appropriate use of this forum for this please by all means let me know. I know this is more or less not really relevant to the STS in specific, but as the STS team has had great success doing this that's part of the reason I'm asking here.

Now, for my next question. How do you handle the dependencies for springframework? Do you just pull the release jars from the spring distribution and augment them to OSGi bundles? And, regardless of how that is done, how are those bundles made available to the development environment?

The Spring framework bundles that we are using (3.1.1) are coming as OSGi bundles from the Spring framework project directly (they are already OSGi bundles). For the development we use STS in self-hosting mode, so running STS and developing against STS. In that case, you have all those bundles in your target platform. If there is anything specific needed, I add this to my personal PDE target platform in STS/Eclipse.

Why are you asking all these questions? Are you interested in getting involved?
We would welcome pull requests on GitHub very much!!!

Cheers,
-Martin

Comment

Hey!
The Spring framework bundles that we are using (3.1.1) are coming as OSGi bundles from the Spring framework project directly (they are already OSGi bundles). For the development we use STS in self-hosting mode, so running STS and developing against STS. In that case, you have all those bundles in your target platform. If there is anything specific needed, I add this to my personal PDE target platform in STS/Eclipse.

Why are you asking all these questions? Are you interested in getting involved?
We would welcome pull requests on GitHub very much!!!

Cheers,
-Martin

I'm asking the questions because of a project I'm working on. We've implemented a web application using maven & Spring and we're investigating integrating BIRT for a reporting solution. At the moment, we've implemented the report data set utilizing the scripted data source. Ultimately I'd like to get to a point where we can implement the data retrieval using an ODA plugin as we have some specific services we've implemented as Spring components.

Utilizing the ODA would require us to have exposure of the interfaces we have defined in our application (maven based) to query our back end. Our back-end is a RESTful based system but we have some interesting communication requirements around. At this point I was a bit stumped on how to expose those libraries and dependencies to the PDE so I could develop the plugin. Seeing as how STS is built on top of Spring Framework, it seemed natural to ask how the STS team made these exposures.

At some point or another I'd love to be able to contribute, as the STS has made my life as a developer much easier. But that unfortunately requires me to get time freed up to learn the PDE functionality and how to go about understanding and implementing with it.