- validate
- compile
- test
- package
- integration-test nou!
- verify - verifică integritatea
- install - instalează pachetul în repo local
- deploy - copiază pachetul într-un repo remote
15 noiembrie 2022
Maven - ziua 2 (finală)
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
<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
> 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)