SlideShare uma empresa Scribd logo
1 de 16
Baixar para ler offline
СИСТЕМЫ СБОРКИ
    Краткий обзор
ЧТО МОЖНО СОБРАТЬ?
     Зачем что-то собирать?
MAKE


• 100500   реализаций на различных языках

• Основной   файл: Makefile

• 46742   repo@github
MAKE

variable = value

target: componentA componentB
    commandA
    commandB

targetB: componentC componentD
    commandA
    commandB
MAKE

BACKUP_DAY = `date "+%Y.%m%d%"`

release: clean backup

backup:
  tar -czvf /backup/$(BACKUP_DAY).tar.gz build

clean:
  rm -f tmp/*
ANT


• Напиан   на Java

• Независит   от платформы

• Основной    файл: build.xml

• 6346   repo@github
ANT
<?xml version="1.0"?>
<project default="release">
  <target name="release" depends="backup,clean" />
  <target name="backup" description="Clean all">
    <exec executable="tar">
      <arg value="-czvf" />
      <arg value="/backup/${current.day}.tar.gz" />
    </exec>
  </target>
  <target name="clean" description="Clean all">
    <delete dir="tmp" />
  </target>
</project>
MAVEN

• Написан     на Java

• Основной       файл: pom.xml

• 7161   @github.com

• Maven
      - это просто *SARCASM*
 maven@5.minute
 mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app 
 -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
MAVEN
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
	   <modelVersion>4.0.0</modelVersion>
	   <groupId>my.app</groupId>
	   <artifactId>my-app-name</artifactId>
	   <version>0.0.1-SNAPSHOT</version>
	   <packaging>jar</packaging>
	   <name>my-app-name</name>
	   <url>https://github.com/mylogin/myapp</url>
</project>
MAVEN
<build>
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <configuration>
      <source>1.6</source>
      <target>1.6</target>
    </configuration>
  </plugin>
</build>
MAVEN
<project xmlns="http://maven.apache.org/POM/4.0.0"                    <developerConnection>scm:git:ssh://git@github.com/arey/         <downloadUrl>https://github.com/arey/maven-config-github-
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"             maven-config-github-cloudbees.git</developerConnection>         cloudbee</downloadUrl>
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://       </scm>                                                            <repository>
maven.apache.org/maven-v4_0_0.xsd">                                                                                                     <id>javaetmoi-cloudbees-release</id>
  <modelVersion>4.0.0</modelVersion>                                <build>                                                             <name>javaetmoi-cloudbees-release</name>
  <groupId>com.javaetmoi.maven</groupId>                              <extensions>                                                      <!-- Webdav repository url are prefixed with dav: -->
  <version>1.1-SNAPSHOT</version>                                       <!-- Extension required to deploy a snapshot or a               <url>dav:https://repository-



                                                                   ЕЩЁ XML!
  <artifactId>maven-config-github-cloudbees</artifactId>          release to the CloudBees remote maven repository using Webdav   javaetmoi.forge.cloudbees.com/release/</url>
  <name>JavaEtMoi Maven :: ${project.artifactId} - $              -->                                                                 </repository>
{project.packaging}</name>                                              <extension>                                                   <snapshotRepository>
  <packaging>pom</packaging>                                              <groupId>org.apache.maven.wagon</groupId>                     <id>javaetmoi-cloudbees-snapshot</id>
  <description>Maven configuration example pom.xml file for               <artifactId>wagon-webdav</artifactId>                         <name>javaetmoi-cloudbees-snapshot</name>
working with GitHub and the CloudBees maven repository</                  <version>1.0-beta-2</version>                                 <url>dav:https://repository-
description>                                                            </extension>                                              javaetmoi.forge.cloudbees.com/snapshot/</url>
  <inceptionYear>2012</inceptionYear>                                 </extensions>                                                   </snapshotRepository>
  <url>https://github.com/arey/maven-config-github-cloudbees</                                                                      </distributionManagement>
url>                                                                  <plugins>
                                                                        <!-- Plugin used to process release using the command       <repositories>



                                                                 БОЛЬШЕ XML!
  <developers>                                                    line: mvn release:prepare release:perform -->                       <!-- Cloudbees maven repositories for releases and
    <developer>                                                         <plugin>                                                  snapshots -->
      <id>arey</id>                                                       <groupId>org.apache.maven.plugins</groupId>                 <repository>
      <name>Antoine Rey</name>                                            <artifactId>maven-release-plugin</artifactId>                 <id>javaetmoi-cloudbees-release</id>
      <email>antoine@javaetmoi.com</email>                                <version>2.2.2</version>                                      <name>javaetmoi-cloudbees-release</name>
      <url>http://javaetmoi.com</url>                                   </plugin>                                                       <url>https://repository-javaetmoi.forge.cloudbees.com/
      <timezone>+1</timezone>                                                                                                     release/</url>
      <roles>                                                           <plugin>                                                        <releases>
        <role>Java Developer</role>                                       <groupId>org.apache.maven.plugins</groupId>                     <enabled>true</enabled>
      </roles>                                                            <artifactId>maven-source-plugin</artifactId>                  </releases>
    </developer>                                                          <version>2.1.2</version>                                      <snapshots>
  </developers>                                                           <configuration>                                                 <enabled>false</enabled>
                                                                            <encoding>UTF-8</encoding>                                  </snapshots>
  <!-- Continuous Integration build hosted by CloudBees -->               </configuration>                                            </repository>
  <ciManagement>                                                        </plugin>                                                     <repository>
    <system>jenkins</system>                                            <plugin>                                                        <id>javaetmoi-cloudbees-snapshot</id>
    <url>https://javaetmoi.ci.cloudbees.com/job/Maven-                    <groupId>org.apache.maven.plugins</groupId>                   <name>javaetmoi-cloudbees-snapshot</name>
Configuration-for-GitHub/</url>                                           <artifactId>maven-javadoc-plugin</artifactId>                 <url>https://repository-javaetmoi.forge.cloudbees.com/
  </ciManagement>                                                         <version>2.7</version>                                  snapshot/</url>
  <issueManagement>                                                     </plugin>                                                       <releases>
    <system>github</system>                                             <plugin>                                                          <enabled>false</enabled>
    <url>https://github.com/arey/maven-config-github-                     <groupId>org.apache.maven.plugins</groupId>                   </releases>
cloudbees/issues</url>                                                    <artifactId>maven-deploy-plugin</artifactId>                  <snapshots>
  </issueManagement>                                                      <version>2.7</version>                                          <enabled>true</enabled>
                                                                        </plugin>                                                       </snapshots>
                                                                      </plugins>                                                      </repository>
  <!-- GitHub Software Configuration Management -->                 </build>                                                        </repositories>
  <scm>
    <url>https://github.com/arey/maven-config-github-               <!-- Deploy releases and snapshots to the CloudBees maven
cloudbees</url>                                                   repositories -->                                                </project>
    <connection>scm:git:ssh://git@github.com/arey/maven-            <distributionManagement>
config-github-cloudbees.git</connection>                                                                                          7
ANT + IVY


• Теперь   ant почти как maven!

• Основной    файл: ivy.xml

• добавляет   секцию dependencies
GRADLE

• Написан   на Java

• Основной    файл: build.gradle

• Сборка   описывается на Groovy (Java с DSL)

• Умеет   исполнять рецепты ant и ivy/maven

• 432   repo@github :)
GRADLE

task release(dependsOn: [‘clean’,’backup’])

task backup << {
  def cmd="tar -czvf /backup/backup.tar.gz build"
  cmd.execute()
}

task clean << {
  def dir = new File("tmp")
  dir.deleteDir()
}
ЧТО ЕЩЁ


• SCons    (Python), 229 repo@github

• Phing   (Ant на php)

• _Первая    буква вашего любимого языка_ ake

• IncrediBuild   for Visual Studio
THE END

Mais conteúdo relacionado

Mais procurados

Tycho - good, bad or ugly ?
Tycho - good, bad or ugly ?Tycho - good, bad or ugly ?
Tycho - good, bad or ugly ?Max Andersen
 
How to be effective with JBoss Developer Studio
How to be effective with JBoss Developer StudioHow to be effective with JBoss Developer Studio
How to be effective with JBoss Developer StudioMax Andersen
 
Enterprise Build And Test In The Cloud
Enterprise Build And Test In The CloudEnterprise Build And Test In The Cloud
Enterprise Build And Test In The CloudCarlos Sanchez
 
JavaDo#09 Spring boot入門ハンズオン
JavaDo#09 Spring boot入門ハンズオンJavaDo#09 Spring boot入門ハンズオン
JavaDo#09 Spring boot入門ハンズオンharuki ueno
 
Enterprise Maven Repository BOF
Enterprise Maven Repository BOFEnterprise Maven Repository BOF
Enterprise Maven Repository BOFMax Andersen
 
Java EE 6 = Less Code + More Power
Java EE 6 = Less Code + More PowerJava EE 6 = Less Code + More Power
Java EE 6 = Less Code + More PowerArun Gupta
 
Vue routing tutorial getting started with vue router
Vue routing tutorial getting started with vue routerVue routing tutorial getting started with vue router
Vue routing tutorial getting started with vue routerKaty Slemon
 
Web deploy command line
Web deploy command lineWeb deploy command line
Web deploy command lineLarry Nung
 
Deep Dive Hands-on in Java EE 6 - Oredev 2010
Deep Dive Hands-on in Java EE 6 - Oredev 2010Deep Dive Hands-on in Java EE 6 - Oredev 2010
Deep Dive Hands-on in Java EE 6 - Oredev 2010Arun Gupta
 
OSGi framework overview
OSGi framework overviewOSGi framework overview
OSGi framework overviewBalduran Chang
 
Creating Your First WordPress Plugin
Creating Your First WordPress PluginCreating Your First WordPress Plugin
Creating Your First WordPress PluginBrad Williams
 
Tuscany : Applying OSGi After The Fact
Tuscany : Applying  OSGi After The FactTuscany : Applying  OSGi After The Fact
Tuscany : Applying OSGi After The FactLuciano Resende
 
Maven, Eclipse and OSGi Working Together - Carlos Sanchez
Maven, Eclipse and OSGi Working Together - Carlos SanchezMaven, Eclipse and OSGi Working Together - Carlos Sanchez
Maven, Eclipse and OSGi Working Together - Carlos Sanchezmfrancis
 
Spring boot入門ハンズオン第二回
Spring boot入門ハンズオン第二回Spring boot入門ハンズオン第二回
Spring boot入門ハンズオン第二回haruki ueno
 

Mais procurados (20)

Apache Maven for AT/QC
Apache Maven for AT/QCApache Maven for AT/QC
Apache Maven for AT/QC
 
Tycho - good, bad or ugly ?
Tycho - good, bad or ugly ?Tycho - good, bad or ugly ?
Tycho - good, bad or ugly ?
 
How to be effective with JBoss Developer Studio
How to be effective with JBoss Developer StudioHow to be effective with JBoss Developer Studio
How to be effective with JBoss Developer Studio
 
Maven in Mule
Maven in MuleMaven in Mule
Maven in Mule
 
Enterprise Build And Test In The Cloud
Enterprise Build And Test In The CloudEnterprise Build And Test In The Cloud
Enterprise Build And Test In The Cloud
 
Maven
MavenMaven
Maven
 
Maven
MavenMaven
Maven
 
JavaDo#09 Spring boot入門ハンズオン
JavaDo#09 Spring boot入門ハンズオンJavaDo#09 Spring boot入門ハンズオン
JavaDo#09 Spring boot入門ハンズオン
 
Enterprise Maven Repository BOF
Enterprise Maven Repository BOFEnterprise Maven Repository BOF
Enterprise Maven Repository BOF
 
Java EE 6 = Less Code + More Power
Java EE 6 = Less Code + More PowerJava EE 6 = Less Code + More Power
Java EE 6 = Less Code + More Power
 
Web deploy
Web deployWeb deploy
Web deploy
 
Vue routing tutorial getting started with vue router
Vue routing tutorial getting started with vue routerVue routing tutorial getting started with vue router
Vue routing tutorial getting started with vue router
 
Web deploy command line
Web deploy command lineWeb deploy command line
Web deploy command line
 
Deep Dive Hands-on in Java EE 6 - Oredev 2010
Deep Dive Hands-on in Java EE 6 - Oredev 2010Deep Dive Hands-on in Java EE 6 - Oredev 2010
Deep Dive Hands-on in Java EE 6 - Oredev 2010
 
OSGi framework overview
OSGi framework overviewOSGi framework overview
OSGi framework overview
 
Liferay maven sdk
Liferay maven sdkLiferay maven sdk
Liferay maven sdk
 
Creating Your First WordPress Plugin
Creating Your First WordPress PluginCreating Your First WordPress Plugin
Creating Your First WordPress Plugin
 
Tuscany : Applying OSGi After The Fact
Tuscany : Applying  OSGi After The FactTuscany : Applying  OSGi After The Fact
Tuscany : Applying OSGi After The Fact
 
Maven, Eclipse and OSGi Working Together - Carlos Sanchez
Maven, Eclipse and OSGi Working Together - Carlos SanchezMaven, Eclipse and OSGi Working Together - Carlos Sanchez
Maven, Eclipse and OSGi Working Together - Carlos Sanchez
 
Spring boot入門ハンズオン第二回
Spring boot入門ハンズオン第二回Spring boot入門ハンズオン第二回
Spring boot入門ハンズオン第二回
 

Semelhante a Build system

Pom configuration java xml
Pom configuration java xmlPom configuration java xml
Pom configuration java xmlakmini
 
Soft shake 2013 - make use of sonar on your mobile developments
Soft shake 2013 - make use of sonar on your mobile developmentsSoft shake 2013 - make use of sonar on your mobile developments
Soft shake 2013 - make use of sonar on your mobile developmentsrfelden
 
Make use of Sonar for your mobile developments - It's easy and useful!
Make use of Sonar for your mobile developments - It's easy and useful!Make use of Sonar for your mobile developments - It's easy and useful!
Make use of Sonar for your mobile developments - It's easy and useful!cyrilpicat
 
Spring Web Service, Spring JMS, Eclipse & Maven tutorials
Spring Web Service, Spring JMS, Eclipse & Maven tutorialsSpring Web Service, Spring JMS, Eclipse & Maven tutorials
Spring Web Service, Spring JMS, Eclipse & Maven tutorialsRaghavan Mohan
 
Introduction To Maven2
Introduction To Maven2Introduction To Maven2
Introduction To Maven2Shuji Watanabe
 
Maven introduction in Mule
Maven introduction in MuleMaven introduction in Mule
Maven introduction in MuleShahid Shaik
 
Develop and Deploy your JavaEE micro service in less than 5 minutes with Apac...
Develop and Deploy your JavaEE micro service in less than 5 minutes with Apac...Develop and Deploy your JavaEE micro service in less than 5 minutes with Apac...
Develop and Deploy your JavaEE micro service in less than 5 minutes with Apac...Alex Soto
 
Training in Android with Maven
Training in Android with MavenTraining in Android with Maven
Training in Android with MavenArcadian Learning
 
Hands On with Maven
Hands On with MavenHands On with Maven
Hands On with MavenSid Anand
 
Liquibase via maven
Liquibase via mavenLiquibase via maven
Liquibase via mavenMaki Turki
 
Spring Boot and JHipster
Spring Boot and JHipsterSpring Boot and JHipster
Spring Boot and JHipsterEueung Mulyana
 
Automation Frame works Instruction Sheet
Automation Frame works Instruction SheetAutomation Frame works Instruction Sheet
Automation Frame works Instruction SheetvodQA
 
Getting started with agile database migrations for java flywaydb
Getting started with agile database migrations for java flywaydbGetting started with agile database migrations for java flywaydb
Getting started with agile database migrations for java flywaydbGirish Bapat
 

Semelhante a Build system (20)

Pom configuration java xml
Pom configuration java xmlPom configuration java xml
Pom configuration java xml
 
Soft shake 2013 - make use of sonar on your mobile developments
Soft shake 2013 - make use of sonar on your mobile developmentsSoft shake 2013 - make use of sonar on your mobile developments
Soft shake 2013 - make use of sonar on your mobile developments
 
Make use of Sonar for your mobile developments - It's easy and useful!
Make use of Sonar for your mobile developments - It's easy and useful!Make use of Sonar for your mobile developments - It's easy and useful!
Make use of Sonar for your mobile developments - It's easy and useful!
 
Maven advanced
Maven advancedMaven advanced
Maven advanced
 
Spring Web Service, Spring JMS, Eclipse & Maven tutorials
Spring Web Service, Spring JMS, Eclipse & Maven tutorialsSpring Web Service, Spring JMS, Eclipse & Maven tutorials
Spring Web Service, Spring JMS, Eclipse & Maven tutorials
 
Pom
PomPom
Pom
 
Introduction To Maven2
Introduction To Maven2Introduction To Maven2
Introduction To Maven2
 
Maven
MavenMaven
Maven
 
Maven introduction in Mule
Maven introduction in MuleMaven introduction in Mule
Maven introduction in Mule
 
Develop and Deploy your JavaEE micro service in less than 5 minutes with Apac...
Develop and Deploy your JavaEE micro service in less than 5 minutes with Apac...Develop and Deploy your JavaEE micro service in less than 5 minutes with Apac...
Develop and Deploy your JavaEE micro service in less than 5 minutes with Apac...
 
Ant, Maven and Jenkins
Ant, Maven and JenkinsAnt, Maven and Jenkins
Ant, Maven and Jenkins
 
Training in Android with Maven
Training in Android with MavenTraining in Android with Maven
Training in Android with Maven
 
Hands On with Maven
Hands On with MavenHands On with Maven
Hands On with Maven
 
Liquibase via maven
Liquibase via mavenLiquibase via maven
Liquibase via maven
 
Maven
MavenMaven
Maven
 
Spring Boot and JHipster
Spring Boot and JHipsterSpring Boot and JHipster
Spring Boot and JHipster
 
Apache Maven
Apache MavenApache Maven
Apache Maven
 
Automation Frame works Instruction Sheet
Automation Frame works Instruction SheetAutomation Frame works Instruction Sheet
Automation Frame works Instruction Sheet
 
Getting started with agile database migrations for java flywaydb
Getting started with agile database migrations for java flywaydbGetting started with agile database migrations for java flywaydb
Getting started with agile database migrations for java flywaydb
 
Using Maven2
Using Maven2Using Maven2
Using Maven2
 

Último

Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 

Último (20)

Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 

Build system

  • 1. СИСТЕМЫ СБОРКИ Краткий обзор
  • 2. ЧТО МОЖНО СОБРАТЬ? Зачем что-то собирать?
  • 3. MAKE • 100500 реализаций на различных языках • Основной файл: Makefile • 46742 repo@github
  • 4. MAKE variable = value target: componentA componentB commandA commandB targetB: componentC componentD commandA commandB
  • 5. MAKE BACKUP_DAY = `date "+%Y.%m%d%"` release: clean backup backup: tar -czvf /backup/$(BACKUP_DAY).tar.gz build clean: rm -f tmp/*
  • 6. ANT • Напиан на Java • Независит от платформы • Основной файл: build.xml • 6346 repo@github
  • 7. ANT <?xml version="1.0"?> <project default="release"> <target name="release" depends="backup,clean" /> <target name="backup" description="Clean all"> <exec executable="tar"> <arg value="-czvf" /> <arg value="/backup/${current.day}.tar.gz" /> </exec> </target> <target name="clean" description="Clean all"> <delete dir="tmp" /> </target> </project>
  • 8. MAVEN • Написан на Java • Основной файл: pom.xml • 7161 @github.com • Maven - это просто *SARCASM* maven@5.minute mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
  • 9. MAVEN <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>my.app</groupId> <artifactId>my-app-name</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>my-app-name</name> <url>https://github.com/mylogin/myapp</url> </project>
  • 10. MAVEN <build> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.6</source> <target>1.6</target> </configuration> </plugin> </build>
  • 11. MAVEN <project xmlns="http://maven.apache.org/POM/4.0.0"     <developerConnection>scm:git:ssh://git@github.com/arey/     <downloadUrl>https://github.com/arey/maven-config-github- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" maven-config-github-cloudbees.git</developerConnection> cloudbee</downloadUrl> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://   </scm>     <repository> maven.apache.org/maven-v4_0_0.xsd">       <id>javaetmoi-cloudbees-release</id>   <modelVersion>4.0.0</modelVersion>   <build>       <name>javaetmoi-cloudbees-release</name>   <groupId>com.javaetmoi.maven</groupId>     <extensions>       <!-- Webdav repository url are prefixed with dav: -->   <version>1.1-SNAPSHOT</version>       <!-- Extension required to deploy a snapshot or a       <url>dav:https://repository- ЕЩЁ XML!   <artifactId>maven-config-github-cloudbees</artifactId> release to the CloudBees remote maven repository using Webdav javaetmoi.forge.cloudbees.com/release/</url>   <name>JavaEtMoi Maven :: ${project.artifactId} - $ -->     </repository> {project.packaging}</name>       <extension>     <snapshotRepository>   <packaging>pom</packaging>         <groupId>org.apache.maven.wagon</groupId>       <id>javaetmoi-cloudbees-snapshot</id>   <description>Maven configuration example pom.xml file for         <artifactId>wagon-webdav</artifactId>       <name>javaetmoi-cloudbees-snapshot</name> working with GitHub and the CloudBees maven repository</         <version>1.0-beta-2</version>       <url>dav:https://repository- description>       </extension> javaetmoi.forge.cloudbees.com/snapshot/</url>   <inceptionYear>2012</inceptionYear>     </extensions>     </snapshotRepository>   <url>https://github.com/arey/maven-config-github-cloudbees</   </distributionManagement> url>     <plugins>       <!-- Plugin used to process release using the command   <repositories> БОЛЬШЕ XML!   <developers> line: mvn release:prepare release:perform -->     <!-- Cloudbees maven repositories for releases and     <developer>       <plugin> snapshots -->       <id>arey</id>         <groupId>org.apache.maven.plugins</groupId>     <repository>       <name>Antoine Rey</name>         <artifactId>maven-release-plugin</artifactId>       <id>javaetmoi-cloudbees-release</id>       <email>antoine@javaetmoi.com</email>         <version>2.2.2</version>       <name>javaetmoi-cloudbees-release</name>       <url>http://javaetmoi.com</url>       </plugin>       <url>https://repository-javaetmoi.forge.cloudbees.com/       <timezone>+1</timezone> release/</url>       <roles>       <plugin>       <releases>         <role>Java Developer</role>         <groupId>org.apache.maven.plugins</groupId>         <enabled>true</enabled>       </roles>         <artifactId>maven-source-plugin</artifactId>       </releases>     </developer>         <version>2.1.2</version>       <snapshots>   </developers>         <configuration>         <enabled>false</enabled>           <encoding>UTF-8</encoding>       </snapshots>   <!-- Continuous Integration build hosted by CloudBees -->         </configuration>     </repository>   <ciManagement>       </plugin>     <repository>     <system>jenkins</system>       <plugin>       <id>javaetmoi-cloudbees-snapshot</id>     <url>https://javaetmoi.ci.cloudbees.com/job/Maven-         <groupId>org.apache.maven.plugins</groupId>       <name>javaetmoi-cloudbees-snapshot</name> Configuration-for-GitHub/</url>         <artifactId>maven-javadoc-plugin</artifactId>       <url>https://repository-javaetmoi.forge.cloudbees.com/   </ciManagement>         <version>2.7</version> snapshot/</url>   <issueManagement>       </plugin>       <releases>     <system>github</system>       <plugin>         <enabled>false</enabled>     <url>https://github.com/arey/maven-config-github-         <groupId>org.apache.maven.plugins</groupId>       </releases> cloudbees/issues</url>         <artifactId>maven-deploy-plugin</artifactId>       <snapshots>   </issueManagement>         <version>2.7</version>         <enabled>true</enabled>       </plugin>       </snapshots>     </plugins>     </repository>   <!-- GitHub Software Configuration Management -->   </build>   </repositories>   <scm>     <url>https://github.com/arey/maven-config-github-   <!-- Deploy releases and snapshots to the CloudBees maven cloudbees</url> repositories --> </project>     <connection>scm:git:ssh://git@github.com/arey/maven-   <distributionManagement> config-github-cloudbees.git</connection> 7
  • 12. ANT + IVY • Теперь ant почти как maven! • Основной файл: ivy.xml • добавляет секцию dependencies
  • 13. GRADLE • Написан на Java • Основной файл: build.gradle • Сборка описывается на Groovy (Java с DSL) • Умеет исполнять рецепты ant и ivy/maven • 432 repo@github :)
  • 14. GRADLE task release(dependsOn: [‘clean’,’backup’]) task backup << { def cmd="tar -czvf /backup/backup.tar.gz build" cmd.execute() } task clean << { def dir = new File("tmp") dir.deleteDir() }
  • 15. ЧТО ЕЩЁ • SCons (Python), 229 repo@github • Phing (Ant на php) • _Первая буква вашего любимого языка_ ake • IncrediBuild for Visual Studio