Se afișează postările cu eticheta maven. Afișați toate postările
Se afișează postările cu eticheta maven. Afișați toate postările

15 noiembrie 2022

Maven - ziua 2 (finală)

 























Plugins

Goals = plugin-uri configurabile; se pot suprascrie
Exemple: clean, compile, etc

Phases:
  • validate
  • compile
  • test
  • package
  • integration-test nou!
  • verify - verifică integritatea
  • install - instalează pachetul în repo local
  • deploy - copiază pachetul într-un repo remote











JAR plugin - configurat automat ca parte a fazei package, dar se poate suprascrie. Se pot configura atât ce trebuie inclus cât și exclus.













> mvn package   // descarcă tot ce este nevoie în proiect, creează un jar 


Source plugin - parte din package, rulat între fazele install și deploy, împachetează codul sursă















> mvn install  // va crea în /target un project-1.0-SNAPSHOT-sources.jar pe lângă project-1.0-SNAPSHOT.jar deja creat


Javadoc plugin - aproape identic cu source plugin doar că împachetează documentația Java, parte din package, are opțiuni de customizare















> mvn install   // va crea în /target un folder apidocs în care se poate explora javadoc în variantă web (index.html) + project-1.0-SNAPSHOT-javadoc.jar pe lângă project-1.0-SNAPSHOT.jar deja creat

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 (...)

26 iunie 2020

Reveng tool pentru actualizarea claselor java corelate cu baza de date

1. modificare hibernate-reveng.xml, adaugare declaratii:
<schema-selection match-schema="SCHEMA_NAME" match-table="TABLE_NAME" />
<table name="TABLE_NAME" schema="SCHEMA_NAME">
  <primary-key>
    <key-column name="PK_COLUMN_NAME" />
  </primary-key>
</table>

2. Realizarea conexiunii cu BD (hibernate.properties)
hibernate.connection.driver_class=oracle.jdbc.OracleDriver
hibernate.dialect=org.hibernate.dialect.Oracle10gDialect
hibernate.connection.url=jdbc:oracle:thin:@//URL:PORT/DB_NAME
hibernate.connection.username=OWNER
hibernate.connection.password=PASS

3. Rularea plugin-ului
> mvn clean generate-sources -P reveng

4. Commit fisiere modificate, punctual

26 septembrie 2019

Notite MVN, Git, etc

Maven
> mvn clean install -rf :parent -DskipTests


Git MERGE
> git status
> git checkout <branch-de-unde-aduci-date>
> git pull
> git checkout <task care face merge>
> git merge <branch-de-unde-aduci-date>
> git status

Daca sunt conflicte: GO & solve conflicts in IDE
> git commit
(:wq in Vim to save commit default message)
> IDE: add & commit as normal
> git push

Commit de pe branch-ul meu pe unul gresit:
> git commit --amend
(edit file with correct branch code)
> git push

Sterge toate modificarile necomise inca:
> git add .
> git stash
> git stash drop

Arata codul ultimului commit (nu neaparat pushed):
> git log --format="%H" -n 1

Pe un branch nou aplica un commit:
> git cherry-pick <commit-id>
> git push


GIT Bash: find text in all files:
> grep -rnw '/path/to/somewhere/' -e 'pattern'


IDE Hotswap agent
-XXaltjvm=dcevm -javaagent:C:\Program Files\Java\hotswap-agent.jar YourApp

Run in debug mode, check hotswap are init in the logs
Reload:
1) Run -> Reload changed classes
2) Build -> Recompile...
3) App: refresh step


Altele
If pinging PC does not work:
> ipconfig /flushdns
(cached IP has changed)