What can I gain from Maven if I already have RTC?
Hi
The company uses Maven a lot as I hear it and I just joined a quite new project. So far I don't know what they are using from Maven. I see their source code is in RTC and my job is do the build and deployment automation.
Since the project is using Scrum, so my vision is to implement the idea of "Continuously Delivery". I know I can use JBE or something else like BuildForge or CC for the build automation. I don't know why I have to use Maven.
We are doing Scrum planning in RTC, version control with RTC. It's a WESB application and moving to WAS application.
Thanks
Jirong
The company uses Maven a lot as I hear it and I just joined a quite new project. So far I don't know what they are using from Maven. I see their source code is in RTC and my job is do the build and deployment automation.
Since the project is using Scrum, so my vision is to implement the idea of "Continuously Delivery". I know I can use JBE or something else like BuildForge or CC for the build automation. I don't know why I have to use Maven.
We are doing Scrum planning in RTC, version control with RTC. It's a WESB application and moving to WAS application.
Thanks
Jirong
3 answers
Maven is more of a build tool, which you would call from the JBE, or BF. So the build automation part would be handled by BF/RTC but the actual compile and artifact generation would be handled by Maven. So they aren't really overlapping at all. In fact, there is a Maven JBE build definition for this reason.
~Spencer
Maven does two things: It is a build tool (e.g. like make or ant) and it is a dependency/package management system (e.g. like ivy, rpm, or ruby gems).
RTC does neither of these things, so they do not conflict.
What you gain for using maven is:
- Maven's proscribed lifecycle goals: package, verify, release, etc.; this helps ensure good practices for developers. e.g. No releasing a project that depends on a -SNAPSHOT jar.
- Dependency management via a maven repository (like nexus); you can make sure your project has the foobar-1.2.3.jar when the code needs 1.2.3. And when the code needs foobar-2.0.0.jar you can ensure that as well.
- Artifact management via a maven repository (like nexus); You push up your compiled projects (jars and pom) into the repository and you can be sure that any other project that depends on the jar will get *that* version of the jar, not a silently updated version, etc.
There are other tools for getting the same effect, e.g. gradle w. ivy or ant w. ivy -- Maven has some warts, but there is a lot of good docs out there and lots of people who can help you.
Ciao!
Nice Q&A here.
One question though. Is there any "gotcha" by using Maven? Is there a "If you use Maven, you lose the ability to (blank)"?
thanks
One question though. Is there any "gotcha" by using Maven? Is there a "If you use Maven, you lose the ability to (blank)"?
thanks
Comments
the only thing I don't like about Maven (and gradle) is that they don't support incremental build very well. you can build an elaborate tree of sub folder builds very easily, but if u start at the top POM, it will build everything below it.
1 line of code changes, and u build everything.
I would use Jenkins with the RTC SCM plugin for the build engine instead of JBE.. it has great support for maven, nexus/artifactory, and all kinds of deployment mechanisms..