10 noiembrie 2022

Maven class - ziua 1

Introducere

Build tool --> produce un artifact

Maven is built with Maven :)

ANT - construit ca alternativă la Make - nu este rival Maven, se pot folosi împreună


mvn versions:update-properties  - face update la toate dependințele din pom cu ultimele lor versiuni publicate


<build>

  <finalName> GEO </finalName>   <!-- app se va numi GEO.jar -->

  <plugins>

    <plugin>

          ...

    </plugin>

  </plugins>

</build>


> mvn compile --> .class files

> mvn package --> .jar files


Structura Maven

- Maven se uită prestabilit în src/main/java

- compilează in /target

- pom.xml: project info (groupId, artifactId, version, packaging (jar/war)), dependencies (same info), goals, etc

Goals

  • clean
  • compile
  • package (rulează deja compile)
  • install (ruleaza package și instalează jar/war în local repository)
  • deploy (rulează install și copiază rezultatul într-un repo remote)


Maven storage prestabilit: ~/.m2/repository


Dependencies

Dependency: specificare groupId, artifactId, version

SNAPSHOT este versiunea inițială a proiectului în dezvoltare

  - se pot folosi si sufixele M1 (milestone1) sau RC1 (release candidate1) când urmează să fie lansat

  - sufixe RELEASE sau FINAL pt proiectul final


Tipuri de packaging: pom, jar, war, ear, maven-plugin; toate sunt arhive zip la bază; tipul prestabilit este jar

Diferențe între jar, war și ear:

  • create pentru medii diferite
  • la nivel intern: ear trebuie să aibă un META-INF/application.xml , un war cere un WEB-INF/web.xml , iar un jar nu are astfel de cerințe

Pentru tipul de packaging pom: toate dependințele sunt descărcate în arhivă


Dependințe tranzitive: dependințe descărcate automat, de care depind dependințele declarate în proiect


Scope:

  • compile - prestabilit, dependința este disponibilă oriunde în aplicație, propagată în proiectele dependente (tranzitivă)
  • provided - la fel ca compile, dar dependința nu va fi inclusă în artifactul final; disponibilă doar la momentul compilării. Nu este tranzitivă
  • runtime - este nevoie de ea doar la execuție 
  • test (ex. junit)
  • system - deprecated, a nu se folosi! - pt a specifica direct un jar anume din sistem
  • import (...)

Niciun comentariu: