Jonas Ragaišis Programų sistemų 2M kursas Vilnius, 2015

Slides:



Advertisements
Similar presentations
Introduction to Maven 2.0 An open source build tool for Enterprise Java projects Mahen Goonewardene.
Advertisements

Jenkins User Conference San Francisco, Sept #jenkinsconf Business Process Model & Notation (BPMN) Workflows in Jenkins Max Spring Cisco
Introduction to Maven Michael Youngstrom. Notes This is a training NOT a presentation Please ask questions Prerequisites – Introduction to the Java Stack.
Build your Android App with Gradle Android new build system.
2004 Cross-Platform Automated Regression Test Framework Ramkumar Ramalingam, Rispna Jain IBM Software Labs, India.
Functional Testing with the Java Stack Test Runner
Java Build Tool Comparison HJUG - April 29th, 2009 John Tyler.
Current Topics in Programming Languages Lecture 15_1 George Koutsogiannakis SUMMER
 Visual Studio has great support for building ASP.NET web applications  Real web application development involves more than just copying the files created.
Continuous Integration after Hudson, CruiseControl, and Home Built Mile High Agile 2011 – Mark Waite.
Chapter 3 Navigating a Project Goals & Objectives 1.Get familiar with the navigation of the project. How is everything structured? What settings can you.
Maven and Stack Starter Michael Youngstrom. Notes This is a training NOT a presentation Please ask questions Prerequisites – Introduction to Java Stack.
MAVEN-BLUEMARTINI Yannick Robin. What is maven-bluemartini?  maven-bluemartini is Maven archetypes for Blue Martini projects  Open source project on.
Sumedha Rubasinghe October,2009 Introduction to Programming Tools.
What’s new in Stack 3.2 Michael Youngstrom. Disclaimer This IS a presentation – So sit back and relax Please ask questions.
AUTOBUILD Build and Deployment Automation Solution.
ASP.NET.. ASP.NET Environment ASP.NET is Microsoft's programming framework that enables the development of Web applications and services. It is an easy.
MAE Continuous Integration Administration guide July 8th, 2013.
Continuous Integration Mile High Agile 2012 – Mark Waite 3 April 2012.
NA-MIC National Alliance for Medical Image Computing UCSD: Engineering Core 2 Portal and Grid Infrastructure.
Artifact Management Managing Maven and other artifacts in Perforce.
Ecosystem. About the Speaker Java developer since the beginning True believer in Open Source Groovy committer since 2007 Project lead of the Griffon framework.
Build Systems Presentation December 14, 2015 Noon-1pm Kathy Lee Simunich Bldg. 203/ D120 Brought to you by: Argonne Java.
Lecture XIII: Continuous Integration CS 4593 Cloud-Oriented Big Data and Software Engineering.
(1) Introduction to Continuous Integration Philip Johnson Collaborative Software Development Laboratory Information and Computer Sciences University of.
USING HARDWARE DEVICES When building a mobile application, it's important that you always test your application on a real device before releasing it.
Copyright Vincent Massol 2006 – All rights reserved Panorama of Quality Features in Maven2 Vincent Massol, 11 July 2006
Maven. Introduction Using Maven (I) – Installing the Maven plugin for Eclipse – Creating a Maven Project – Building the Project Understanding the POM.
Copyright © 2010 Accenture All Rights Reserved. Accenture, its logo, and High Performance Delivered are trademarks of Accenture. ODS Tools – Fannie Mae.
Snip2Code: Search, Share and Collect Code Snippets Faster, Easier, Efficiently with Power of Microsoft Azure Platform MICROSOFT AZURE ISV PROFILE: SNIP2CODE.
Arizona SharePoint Professionals Group.
Anjana & Shankar September,2010 Introduction to Programming Tools.
Slide 1. What's New in NetBeans IDE 7.1 Name Title.
Slide 1. What's New in NetBeans IDE 7.2 The following is intended to outline our general product direction. It is intended for information purposes only,
Platform & Maven2 David Šimonek. Certified Engineer Course Agenda What is Maven? Why Maven? NB IDE & Maven NB Platform & Maven.
See Build, See Build Run Run Build Run Hudson - Continuous Integration Vincent Batts SELF 2010.
This material is based upon work supported by the U.S. Department of Energy Office of Science under Cooperative Agreement DE-SC , the State of Michigan.
Jenkins 2.x Chris Vogel. Agenda O Jenkins background O Installation O Jenkins 2.x highlights O Build pipelines O Pipeline DSL O Multibranch plugin.
Daoyuan Wu, Ximing Liu*, Jiayun Xu*, David Lo, and Debin Gao
Appium Studio Appium testing made easy at any scale.
Object Oriented Programming in
Build Fundamentals and Continuous Integration
Agenda:- DevOps Tools Chef Jenkins Puppet Apache Ant Apache Maven Logstash Docker New Relic Gradle Git.
Mobile Device Development
Develop in the Cloud, Accelerate Software Evolution
JRA2: Acceptance Testing senarious
Build Automation with Gradle
Continuous Integration (CI)
Spark Presentation.
Platform as a Service.
Automated Update System
CE-105 Spring 2007 Engr. Faisal ur Rehman
Chengyu Sun California State University, Los Angeles
CIS 470 Mobile App Development
Zlatko Stamatov JavaSkop 13 December 2015
Simplified Development Toolkit
ESIS Consulting LLC (C) ESIS Consulting LLC. All rights reserved
Module 01 ETICS Overview ETICS Online Tutorials
Patricia NXT.
Microsoft Build /3/2019 4:12 AM © 2016 Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY,
Spark and Scala.
Android Developer Fundamentals V2
CS 240 – Advanced Programming Concepts
The Most Popular Android UI Automation Testing Tool Andrii Voitenko
Martin MSBuild Martin
DBOS DecisionBrain Optimization Server
Overview on CI Use JJB (Jenkins Job Builder) to manage Jenkins jobs.
Building LabKey with Gradle
Software Engineering and Architecture
Presentation transcript:

Jonas Ragaišis Programų sistemų 2M kursas Vilnius, 2015 Gradle Jonas Ragaišis Programų sistemų 2M kursas Vilnius, 2015

Gradle open source build automation system builds upon the concepts of Apache Ant and Apache Maven introduces a Groovy-based domain-specific language (DSL)

Why gradle? Designed for multi-project builds which can grow to be quite large Supports incremental builds Tracks version upgrades

Polyglot builds Linkedin uses Gradle to build 60 different programming languages

Tool integrations

Robust Dependency Management Retrieve artifacts from any known binary repository, from public to private to local. Flat

High Performance Builds Gradle avoids unnecessary workload by caching: remote metadata and artifacts transitive dependency resolution build execution plan plugin inputs and outputs test results

Packs all the gear to build enterprise software for the JVM Test frameworks: JUnit, TestNG, Spock Application frameworks: Java EE, Grails, Play!, Code analysis cops: Checkstyle, CodeNarc, FindBugs, JDepend, PMD, JaCoCo, Sonar

Reliable incremental builds

Partial builds Gradle helps quickly accomplish the task by only building parts of the project

Efficient test execution Filter tests by type, group or pattern Run a single test Rerun failed tests Fail fast (stop on first failure) Run tests in parallel Distribute tests across multiple runtimes or machines Skip tests when not needed

Gradle’s Daemon cuts startup time to near zero enhances incremental builds reuses the execution plan between subsequent builds monitors changes to make builds reactive lets you move seamlessly between the IDE and command line performs preemptive work and maintenance tasks

From continuous integration to delivery Get feedback sooner thanks to CI job caching and Gradle’s incremental build capabilities. Activate Gradle’s numerous reports to inspect build results, troubleshoot problems and monitor build performance. Use Gradle’s publishing tasks to turn the CI server into a publishing tool and release manager. Push artifacts to a binary repository, documentation to a web server or your app to a staging or production environment.

Android studio Automatic configuration of build variants and multiple APK file generation ProGuard obfuscation App-signing capabilities Vector drawables Project wizard for creating a Gradle-based project Command line and IDE compatibility

Repositories repositories { jcenter() mavenCentral() maven { url 'https://twittersdk.artifactoryonline.com/twittersdk/public/' } maven { url 'https://maven.fabric.io/public' } }

Global parameters maven { credentials { username projectNexusUsername password projectNexusPassword } url 'http://nexus.app.lan/nexus/content/repositories/releases'

Android project configuration (1/x) compileSdkVersion 23 buildToolsVersion "23.0.1" useLibrary 'org.apache.http.legacy' packagingOptions { exclude 'META-INF/LICENSE' exclude 'META-INF/NOTICE' exclude 'META-INF/services/javax.annotation.processing.Processor' }

Android project configuration (2/x) dexOptions { incremental true javaMaxHeapSize "2048M" } lintOptions { checkReleaseBuilds false abortOnError false disable 'InvalidPackage'

Android project configuration (3/x) defaultConfig { applicationId "lt.lemonlabs.android.mob.payment" minSdkVersion 14 targetSdkVersion 22 multiDexEnabled true resValue 'string', 'config_app_name', 'Wallet'

Android project configuration (4/x) buildConfigField "String", "CARD_RELATION_URI", '"wallet://card/related"' buildConfigField "String", "API_BASE_URI", '"https://wallet.com"' buildConfigField "String", "API_CLIENT_MAC_ID", '"AB14sAp3OwKSeCZk"' buildConfigField 'boolean', 'FEATURE_FLAG_SCAN_HISTORY', 'false' buildConfigField 'boolean', 'FEATURE_FLAG_PIN_LOCK', 'true'

Android project configuration (5/x) signingConfigs { beta { storeFile file("keys/beta.keystore") storePassword "android" keyAlias "alias_name" keyPassword "android" }

Android project configuration (6/x) productFlavors { prod { versionCode 34 versionName "1.1.25" buildConfigField "String", "NEWRELIC_KEY", '"AB8413efaesba5a3Fsd25"' resValue 'string', 'config_google_maps_api_key', 'AIZad23OTiX86iB74' }

Android project configuration (7/x) sourceSets { main { jniLibs.srcDirs = ['libs'] java.srcDirs = ['src/main/java', 'src/main/java-gen', 'src/main/kotlin'] }

Android project configuration (8/x) buildTypes { release { proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' shrinkResources true productFlavors.beta.signingConfig signingConfigs.beta }

Android project configuration (9/x) dependencies { compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlinVersion" compile 'com.android.support:support-v4:23.1.0' compile 'com.android.support:design:23.0.1' compile fileTree(dir: 'libs', include: ['*.jar']) compile('com.crashlytics.sdk.android:crashlytics:2.5.2@aar') { transitive = true }

Semantic Versioning v3.10.672 MAJOR version when you make incompatible API changes, MINOR version when you add functionality in a backwards-compatible manner, and PATCH version when you make backwards-compatible bug fixes.

Alternatives Rake (DSL + Ruby) Apache Buildr (DSL + Ruby) Scons (DSL + Python) Simple Build Tool (DSL + Scala)

Off topic :) Dockercraft - simple Minecraft Docker client, to visualize and manage Docker containers. https://github.com/docker/dockercraft You can start, stop and remove containers interacting with levers and buttons. Some Docker commands are also supported directly via Minecraft's chat window