Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 9 years ago.
Improve this question
I was reading this blog by Kent R.Spillner regarding java build tools. Although I have lightly used Ant and Maven, I didn't have commited to either one seriously which I intend to do. Is the blog post I linked an exagerated one? Most importantly, should I use Maven or Ant for a medium sized project ( approximately 20K LOC).
It really depends.
Maven and Ant are just different approaches: imperative and declarative (see Imperative vs Declarative build systems)
Maven is better for managing dependencies (but Ant is ok with them too, if you use Ant+Ivy) and build artefacts. The main benefit from maven - its lifecycle. You can just add specific actions on correct phase, which seems pretty logical: just launch you integration tests on integration-test phase for example. Also, there are many existing plugins, which can could almost everything. Maven archetype is powerful feature, which allows you to quickly create project.
Ant is better for controlling of build process. Before your very first build you have to write you build.xml. If your build process is very specific, you have to create complicated scripts. For long-term projects support of ant-scripts could become really painful: scripts become too complicated, people, who's written them, could leave project, etc.
Both of them use xml, which could become too big in big long-term projects.
Anyway, you shoud read specific documentation on both. Also, there is ant-maven-plugin, which allow to launch ant-scripts with maven.
P.S. You can take a look on Gradle, which for me could provide more freedom than Maven, but is easier to use than Ant.
Related
Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 4 years ago.
Improve this question
I am working on a new Golang application which involves some proprietary code and also includes some open sources packages. The code will be part of an enterprise GitHub repository.
We don't plan to keep using the latest versions of the open source packages and would want to keep a stable version of the packages. In this context what is the best way to organize the code? From what I have read so far the best way to put the opensource packages into the Vendors directory.
In any case, a clear project layout is something we want to have in the beginning to keep things simple in the long run.
If you are using a version of Go < 1.11, you can take a look at dep for dependency management :
a dep init will generate the layout (see Creating a New Project)
a Gopkg.lock file will handle specific revisions for each dependency, thus ensuring the stability of your build (instead of having different developers using different versions of the same dependency, depending on when they go get that dependency).
However, if you are using a version of Go >= 1.11, as #oren points out in the comments section (credits to him), you'd probably want to use Go modules instead, as it is now introduced in the Go tool chain.
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 6 years ago.
Improve this question
we all know that there is community supporting maven and since maven has some advanced features so most people recommend as building tool and gradle is in picture too but is using ant today will be considered as old fashioned or it still gives same competition that it used to be?
did maven has achieved more then ant or ant is still alive?
Ant is the grandaddy of the all, starting out as a Java version of "make" (an even older build tool). Along came Maven 1.0 (which we all pretend never existed) to be replaced by Maven 2.0. For a brief time the Java world was split between those who understood the importance of dependency management and those who didn't. Eventually all tools now copy what Maven pioneered and we now have Gradle, a modern build tool built on the shoulders of giants :-)
So cool kids Gradle. Most Java developers are using Maven (frequently bundled and hidden away by their Eclipse IDE) and old school release engineers still have productive careers maintaining corporate applications that use Ant.
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 7 years ago.
Improve this question
I'm developing a hybrid framework for GUI automation. I'm using TestNg. I'd like to use ANT / MAVEN. What are the factors that we need to take into account before we make the decision? I have read the difference between ANT and MAVEN online. I have a theoretical understanding of both. But practically how do i decide if ANT / Maven fits my project.Let us say that I choose ANT for my project.Is this a correct decision?
Maven can be considered as a successor for Ant. Maven also has the Surefire plugin for TestNG which provides very elegant TestNG test suite execution. Ant is older and while it is still used in a number of projects, it is rapidly losing ground to Maven. I used Ant for my very first TestNG project and since then moved on to Maven.
Dependency management in maven is easier and you can have several different project phases. Maven, IMHO, is easier to understand as well and updating dependencies and creating and importing modules is very easy. You can use either one to good effect for simple projects but if your project size if going to grow, you will want to use Maven.
Maven is newer and the lingua franca. The simplest way to tell is the fact that far more open source Java projects (I don't know about closed source projects) have Maven support natively, and fewer have Ant support (notwithstanding plugins and other applications that make them both-way compatible). You can research this yourself.
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking us to recommend or find a tool, library or favorite off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it.
Closed 9 years ago.
Improve this question
I want to automate the Build Process of an existing RCP application with an own target platform.
Now I can't decide between Ant and Maven ore maybe there is a better tool?!
The tool should be easy to set up, and should run JUnit and SWTBot Tests.
Can you help me?
Tycho is a good way to build Eclipse plug-ins / applications :
Tycho is focused on a Maven-centric, manifest-first approach to building Eclipse plug-ins, features, update sites, RCP applications and OSGi bundles. Tycho is a set of Maven plugins and extensions for building Eclipse plugins and OSGi bundles with Maven
You can try TeamCity or Jenkins or Hudson.
This tools are continuous integration (CI) servers.
With help of TeamCity, for example, you can create project which run Ant targets or build application with Maven or you can use configuration with both Maven and Ant.
This article is how to create project in TeamCity. This link is about of TeamCity's main features.
The TeamCity supports JUnit, you can read info about others supported tools and platfoms.
The another tool is Luntbuild.
here, a tycho tutorial
for some reason, i couldn't add this as a comment. weird
ps: I'm using tycho with hudson, and this is GREAT!
Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 3 years ago.
Improve this question
I am a CS student and I have a compiler project this year.
I want to know how to manage my project with my three partners.
I know that the compiler has many level and process, and I want to make use of these features to mange my project.
Thanks for any tips/pointers/resources you can provide for me to start.
You haven't really specified what it is that you are compiling, so it's a little difficult to make specific recommendations.
If you're doing something novel, I wrote a blog post a couple of weeks ago that has some specific things to consider:
http://www.plsadventures.com/2009/09/why-programming-language-design-is-hard.html
If it is a pre-existing language you are compiling, then I would work to generate a decent test corpus, and consider using test-driven development to manage your progress.
As you mentioned, there are some obvious components in most compilers that are relatively discrete. I would consider documenting the interfaces that connect these components. For example, if one person is writing the lexer and another is writing the parser, then ensure that you have a list of tokens written down somewhere. The format for your parse and/or abstract syntax trees should be defined and written down so that anybody working on optimisation or code generation is on the same page.
Above all, tests really help this kind of integration. You should be able to build these components separately and put them together, for the most part.
You should use a DCVS like Git or Mercurial, so each of you can develop individually while it's still easy to merge changes.
Next, you should define test cases to know which features you'll need and how you will know that a feature works.
That should help to figure out different areas of the project which don't overlap too much so each member of the team can work without stepping on each others toes.