Suggestions for good java build tools are well integrated with eclipse

I work in several modules (about 10 at present) of a small team (3 people) The compilation, integration and management of build versions are becoming more and more tedious

The following is a description of our current development environment: – several modules depend on each third-party jar – some may export jars, some export wars, and some export independent, runnable jars (using fat jar) – everyone's Javadoc – we use eclipse – the self-defined ant script for each module There is a lot of redundant information between eclipse configuration and ant scripts For example, for a stand-alone fat jar, we list all recursive dependencies, and ideally it can be clearly imported from the eclipse configuration The source code uses SVN for version control

Here are the perfect integration tools I want:

>Automation module release and version control Ideally, the integration tool should detect the need for a new version For example, if I want to publish project a that depends on project B, and if I make small changes to project B locally, the integration tool should first publish the new version of B and build on it. > Strong integration with eclipse so that it can obtain dependencies between modules and third-party libraries from its configuration By the way, I want to continue building paths with eclipse configuration without updating other ". XML" things I see that gradle can generate eclipse project files from its configuration, but the corresponding will be good. > Enable "real time" and transparent development on local projects I mean, I often make small changes to core / public projects when developing major / leaf projects I want my changes to the core project to be immediately available to the project without publishing (or even local) my core project jars. > Store all versions of my module on an external server The simplest (shared folder / WebDAV) will be the best A nice web page with a list of modules and delivery artifacts is also great

I looked around for a lot of things From ant 4 eclipse (integrating eclipse configuration into my ant script) to Maven / ivy / gradle tools

I'm a little confused That's what I've understood so far: – Maven is a great / big tool, but it's a little stiff, forcing you to succumb to its structure and concept It is based on description rather than script If you go this way, you have to develop your own plug-ins Ivy is not as powerful as Maven. It handles less but is more flexible Gradle is somewhere in between This is universal It supports scripting and "contract - based" configuration It integrates ant and extends it

So at this point, I'm looking for actual recommendations from real users What tools do you use? how? Do you have the same needs as me? Will it ease or hinder your life?

Are there any examples of use cases or workspace frameworks that I can use as a starting point to see the functionality of these tools?

Sorry for the length of this email And thank you in advance for your suggestions

Cordial greetings,

Raphael

Solution

The concepts of versioning and repository are built - in maven, which can be applied here

Maven supports snapshot dependencies When using snapshots, Maven will periodically try to download the latest available snapshots from the repository when you run the build Snapshot is usually used when a project is in the active development phase

Maven 2 also supports version ranges (I don't recommend them, but this is another story). For example, it allows you to configure a to depend on B's version [4.0,) (any version greater than or equal to 4.0). If you build and publish a new version of B, a will use it

The m2eclipse plug - in provides two - way synchronization with eclipse

The m2eclipse plug-in supports "workspace resolution": if project a depends on project B, if project B is in the workspace, you can configure a to depend on B source instead of b.jar (if I am not, this is the default mode error) Therefore, changes to the B source will be directly visible without building the b.jar.jar

As mentioned earlier, this is actually the core concept of Maven (you don't even have a choice), and deployment through file: / / or Dav: / / is supported

All in all, Maven may not be the only candidate, but I am sure it is suitable for:

>Your project is not so strange or complex, and your description is not terrible (you may need to refactor the structure, but this should not be a big problem) > Maven also brings workflow based on best practices. > M2eclipse provides powerful integration with IDE

But Maven has some learning curves

The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
分享
二维码
< <上一篇
下一篇>>