Dènyèman, bon zanmi m 'Richard Fichtner te konseye w itilize mvn dependency:analyze
kòmandman an pou debarase m de depandans ki deklare men ki pa itilize yo:
Pandan ke li te yon gwo lide ane de sa, li se konsèy danjere jodi a. Nan pòs sa a, mwen ta renmen eksplike kisa Plugin la fè ak poukisa ou pa ta dwe itilize li men nan pwojè ki pi senp yo.
Kòmandman mvn dependency:analyze
Maven sèvi ak yon achitekti plugin; nan kòmandman ki anwo a, plugin a se maven-dependency-plugin . Yon plugin gen plizyè objektif ki gen rapò. Isit la, li nan analyze
.
Analize depandans pwojè sa a epi detèmine kilès yo: itilize ak deklare; itilize ak pa deklare; yo pa itilize epi yo deklare. Objektif sa a fèt pou yo itilize otonòm, kidonk li toujou egzekite faz
test-compile
a - sèvi ak objektifdependency:analyze-only
olye lè w ap patisipe nan sik lavi konstriksyon an.
Pa default,
maven-dependency-analyzer
yo itilize pou fè analiz la, ak limit akòz lefèt ke li travay nan nivo bytecode, men nenpòt analizè ka konekte nan paramètanalyzer
.
maven-dependency-analyzer
se yon eleman pataje Maven. Deskripsyon li se byen deskriptif:
Analize depandans yo nan yon pwojè pou zafè ki pa deklare oswa ki pa itilize.
Avètisman : Paske analiz yo fè sou bytecode olye de sous la, gen kèk ka yo pa detekte tankou konstan, anotasyon ak retansyon sous sèlman, ak lyen nan Javadoc. Sa a ka mennen nan rezilta kòrèk lè sa yo se itilizasyon yo sèlman nan yon depandans.
Eleman prensipal la se
ProjectDependencyAnalyzer
, ki itilizeClassAnalyzer
akDependencyAnalyzer
.
Avètisman an montre klèman ke li travay nan nivo bytecode . An patikilye, li mansyone klèman ke li pa konsidere kòmantasyon nan nivo sous.
Kòmansè Spring Boot
Mwen te dekri ki jan yo desine pwòp starter Spring Boot ou a yon bon bout tan de sa, epi li pa t 'chanje anpil depi lè sa a. Si w se nouvo nan kòmanse Spring Boot, isit la nan yon rezime.
SpringBoot depann sou klas AutoConfiguration. Klas AutoConfiguration yo se klas konfigirasyon regilye, sa vle di , yo kontribye nan klas aplikasyon yo. Ou ka mete kritè deklanchman espesifik, tankou prezans nan yon pwopriyete Spring, men sa yo pa espesifik nan oto-konfigirasyon.
Isit la se yon koule trè senplifye:
JAR ki vini otomatikman ak Spring Boot se org.springframework.boot:spring-boot-autoconfigure
. Ou ka tcheke kontni META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
li yo :
... org.springframework.boot.autoconfigure.web.client.RestClientAutoConfiguration org.springframework.boot.autoconfigure.web.client.RestTemplateAutoConfiguration org.springframework.boot.autoconfigure.web.embedded.EmbeddedWebServerFactoryCustomizerAutoConfiguration org.springframework.boot.autoconfigure.web.reactive.HttpHandlerAutoConfiguration org.springframework.boot.autoconfigure.web.reactive.ReactiveMultipartAutoConfiguration org.springframework.boot.autoconfigure.web.reactive.ReactiveWebServerFactoryAutoConfiguration org.springframework.boot.autoconfigure.web.reactive.WebFluxAutoConfiguration org.springframework.boot.autoconfigure.web.reactive.WebSessionIdResolverAutoConfiguration org.springframework.boot.autoconfigure.web.reactive.error.ErrorWebFluxAutoConfiguration org.springframework.boot.autoconfigure.web.reactive.function.client.ClientHttpConnectorAutoConfiguration org.springframework.boot.autoconfigure.web.reactive.function.client.WebClientAutoConfiguration org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoConfiguration org.springframework.boot.autoconfigure.web.servlet.ServletWebServerFactoryAutoConfiguration org.springframework.boot.autoconfigure.web.servlet.error.ErrorMvcAutoConfiguration org.springframework.boot.autoconfigure.web.servlet.HttpEncodingAutoConfiguration org.springframework.boot.autoconfigure.web.servlet.MultipartAutoConfiguration org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration org.springframework.boot.autoconfigure.websocket.reactive.WebSocketReactiveAutoConfiguration org.springframework.boot.autoconfigure.websocket.servlet.WebSocketServletAutoConfiguration org.springframework.boot.autoconfigure.websocket.servlet.WebSocketMessagingAutoConfiguration org.springframework.boot.autoconfigure.webservices.WebServicesAutoConfiguration org.springframework.boot.autoconfigure.webservices.client.WebServiceTemplateAutoConfiguration
Kòm yon egzanp, isit la nan RestClientAutoConfiguration
:
@AutoConfiguration(after = { HttpClientAutoConfiguration.class, HttpMessageConvertersAutoConfiguration.class }) //1 @ConditionalOnClass(RestTemplate.class) //2 @Conditional(NotReactiveWebApplicationCondition.class) //3 public class RestTemplateAutoConfiguration { // Class body }
- Mete lòd klas oto-konfigirasyon yo
- Aktive si klas
RestTemplate
la sou classpath la - Aktive si nou pa nan yon kontèks aplikasyon entènèt reyaktif
Remake byen ke loader klas la chaje klas RestTemplateAutoConfiguration
jis byen, kèlkeswa si klas RestTemplate
la sou classpath la oswa ou pa! Spring ogmante mekanis sa a nan tout li yo, jan yo wè pi wo a. An reyalite, rezolisyon klas ki konfigire nan anotasyon yo difere jiskaske yo jwenn aksè klèman .
Pote maven-dependency-analyzer
la nan laj modèn
Committers te fèt analizè a an 2007: men ki jan li te sanble lè sa a. Spring Boot te kòmanse pita, nan 2010. Pou rezon sa a, analizeur a pa t 'pran loading klas difere nan annotations. Remake byen ke sa a se toujou pa ka a; pwojè a pa jwenn anpil lanmou.
Lè w ap itilize plugin a sou yon pwojè Spring Boot, w ap jwenn anpil fo pozitif. Mwen te eseye li ak yon pwojè Spring Boot senp, lè l sèvi avèk WebFlux ak R2DBC sou PostgreSQL.
Isit la nan yon ti ekstrè nan pwodiksyon an lè mwen kouri mvn analyze:dependencies
:
[WARNING] Unused declared dependencies found: [WARNING] org.springframework.boot:spring-boot-starter-data-r2dbc:jar:3.4.0:compile [WARNING] org.testcontainers:postgresql:jar:1.20.4:test [WARNING] org.testcontainers:r2dbc:jar:1.20.4:test
Si mwen retire nenpòt nan depandans sa yo, tès yo pa kouri.
Ki sa ki ta nesesè pou fè analizè a travay ak pwojè Spring Boot? Ann analize analizè a.
Plugin a pèmèt konfigirasyon yon lòt analizè:
Espesifye analizè depandans pwojè a pou itilize (konpozan plexus wòl-sijesyon). Pa default, yo itilize maven-dependency-analyzer. Pou itilize sa a, ou dwe deklare yon depandans pou plugin sa a ki gen kòd pou analizeur a. Analizatè a dwe gen yon non wòl Plexus deklare, epi ou presize non wòl la isit la.
Kalite :
java.lang.String
Depi :
2.2
Obligatwa :
No
Pwopriyete itilizatè :
analyzer
Default :
default
Nou ka kreye yon analizè jeneral ki reutilize pi wo a men li ajoute yon sèl espesifik nan Spring Boot.
Konklizyon
Eta aktyèl la nan analizeur Maven a pa ofri okenn benefis nan pwojè Spring Boot modèn. Kòd ki deja egziste a ouvè a konfigirasyon e menm ekstansyon. Sepandan, nou ta bezwen entegre anpil lojik Spring Boot. Pou pwojè Quarkus ak Micronaut, nou ta mande kòd devwe tou.
Mwen pa konnen si li vo tan ak efò. Si ou panse li ye, mwen espere pòs blog sa a ka sèvi kòm yon analiz bonè.
Pou ale pi lwen:
- depandans: analize
- Maven Depandans Analyzer
- Konsepsyon pwòp starter Spring Boot ou a - pati 1
- Konsepsyon pwòp starter Spring Boot ou a - pati 2
Orijinèlman pibliye nan A Java Geek sou 9 mas 2025