# Introduction to Build Tools

&#x20;  ▪ Application needs to be deployed on a production server&#x20;

&#x20;  ▪ For that, we want to package the application into a single moveable file (artifact), also called “building the code”&#x20;

&#x20;  ▪ This is what a build tool or package manager tool does

![](https://2601183865-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8QpIzz6VwCOTMwaqKYa3%2Fuploads%2FNnTqh01SaJXNZZGeANkB%2Fimage.png?alt=media\&token=9e488adc-9f08-4d3c-a9b4-a8e20a8363e1)

### What is an “artifact”?

&#x20;  ▪ Includes application code and all its dependencies.

### What does “building the code” mean?

&#x20;  ▪ Compiling the code&#x20;

&#x20;  ▪ Compressing the code&#x20;

&#x20;  ▪ Package hundred of files to 1 single file

* keep artifact in storage &#x20;
* to deploy in multiple times have backup&#x20;

&#x20;     dev        test                production

### What is an “artifact repository”?

&#x20;  ▪ The storage where we keep the artifacts.

&#x20;  ▪ To deploy it multiple times, have backup etc. For example, if we deploy the artifact to **development** server, then we are going to deploy this artifact on **test** env and maybe later on **production** env. Or if the dev server crash, we can deploy it again from backup.

&#x20;  ▪ Examples: <mark style="color:red;">Nexus, Jfrog Artifactory</mark>

#### Artifact files look different for each programming language

![](https://2601183865-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8QpIzz6VwCOTMwaqKYa3%2Fuploads%2Fcs9dwrj4PZkZXRjNJNYk%2Fimage.png?alt=media\&token=35b04774-f3d7-41f7-946c-2698e420e77f)
