Skip to content

Continuous Integration

Gábor Szárnyas edited this page Sep 1, 2016 · 10 revisions

Build tools

Building a software consists of various steps, often including:

  • compiling computer source code into binary code,
  • packaging binary code,
  • running automated tests,
  • deploying to production systems,
  • creating documentation and/or release notes.

As building a large software product is a complex task, all popular programming languages have build automation tools. One of the most well-known build tools is GNU Make, a flexible application primarily used for compiling C/C++ code. (However, Make is flexible enough for building any source code, including LaTeX documents.)

Maven

During the course, we will use Gradle, a build automation tool.

Maven embraces the paradigm of convention over configuration, which means that typical build processes can be defined with a small amount of code.

Learning resources

For learning the advanced features of Maven, there is an excellent book titled Maven by Example.

If you wish to build Eclipse plug-ins, use the Tycho Maven plug-in. We compiled some guidelines in our Maven and Eclipse cheat sheet.

Alternatives

Gradle's main competitors are Apache Ant, Apache Maven and SBT. Building a simple project is quite straightforward with all modern build tools, but for more complicated, you have to factor a lot of requirements: support for different languages (Scala, Kotlin, Xtend), platforms (OSGi), IDE integration and so on.

Continuous Integration (CI)

During this course, we will use GitHub for version control and Travis for continuous integration.

Eclipse integration

Eclipse supports Maven through the m2e plugin. Some tips:

  • Eclipse Modeling does not have m2e by default, but you can install it from the Luna/Mars/... update site. If you are using EMF, this is the recommended approach -- m2e is much quicker and easier to install than the EMF and plug-in development components.
  • Do not use the maven-archetype-quickstart archetype:
    • It adds an outdated version of JUnit (3.8) to the project.
    • It does not create the src/main/resources and src/test/resources directories.

Further reading

Clone this wiki locally