Kaip patikrinti, ar "Maven" sistemoje nėra bibliotekų konfliktų


Paskelbimo data:2021 m. sausio 20 d.



INFOMARTION > Kaip patikrinti, ar "Maven" sistemoje nėra bibliotekų konfliktų

Apžvalga.

Kaip patikrinti, ar "Maven" sistemoje nėra bibliotekų konfliktų. "Maven" automatiškai išsprendžia "jar" bibliotekos priklausomybes, tačiau numatytoji konfigūracija neinformuoja apie konfliktus. Štai kaip tokiais atvejais "Maven" patikrinti, ar nėra bibliotekų konfliktų.

Turinys

  1. Kai "Maven" sistemoje atsiranda bibliotekų konfliktų
  2. Kaip patikrinti
  3. santrauka

1. Kai "Maven" sistemoje atsiranda bibliotekų konfliktų

"Maven" automatiškai išsprendžia "Java" bibliotekų priklausomybes. Automatinė priklausomybių rezoliucija reiškia, kad jei turite reikalingą "Jar" failą, jis automatiškai gaus "Jar", reikalingą tam "Jar" paleisti. Daugiau informacijos apie tai, kaip veikia konkrečios bibliotekos priklausomybės nustatymas, rasite šiame straipsnyje.

Kaip "Maven" automatiškai išsprendžia stiklainių bibliotekų priklausomybes.

Tačiau atsiradus bibliotekų konfliktams, jie nėra išsprendžiami automatiškai. Be to, jei nesate įdiegę nustatymų, net negalite nustatyti konflikto. Norėtume aprašyti, kaip patikrinti, ar nėra bibliotekos konfliktų.

2. Kaip patikrinti

Yra du pagrindiniai būdai, kaip patikrinti, ar bibliotekoje nėra konfliktų

  • Įskiepių pristatymas
  • Išankstinis sukūrimo patvirtinimas komanda.

"Įdiegti įskiepius" yra pom.xml nustatymų pridėjimo metodas. "Patikrinti naudojant komandą prieš surinkimą" pažodžiui reiškia rankinį patikrinimą naudojant komandą prieš surinkimą. Norėčiau paaiškinti, kaip tai padaryti.

2-1. Įskiepių pristatymas

Naudingos gali būti šios "Maven" svetainės.

http://maven.apache.org/enforcer/enforcer-rules/dependencyConvergence.html

Į pom.xml įtraukite šiuos nustatymus.

pom.xml


<project>
  ...
  <build>
    <plugins>
      ...
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-enforcer-plugin</artifactId>
        <version>3.0.0-M3</version>
        <executions>
          <execution>
            <id>enforce</id>
            <configuration>
              <rules>
                <dependencyConvergence/>
              </rules>
            </configuration>
            <goals>
              <goal>enforce</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      ...
    </plugins>
  </build>
  ...
</project>

Jei įterpiami pirmiau minėti nustatymai, atsiranda ši klaida ir surinkimas nepavyksta, jei surinkimo metu yra bibliotekų konfliktų.

[WARNING] 
Dependency convergence error for org.apache.commons:commons-collections4:4.1 paths to dependency are:
+-com.example.todo:todo-web:1.0.0-SNAPSHOT
  +-org.apache.poi:poi:3.17
    +-org.apache.commons:commons-collections4:4.1
and
+-com.example.todo:todo-web:1.0.0-SNAPSHOT
  +-org.apache.commons:commons-collections4:4.0

[WARNING] Rule 0: org.apache.maven.plugins.enforcer.DependencyConvergence failed with message:
Failed while enforcing releasability. See above detailed error message.

Jei sąranka taikoma be papildinių, klaidų neatsiranda ir sąranka baigiama įprastai. Jei norite aptikti konfliktus, būtinai tai nustatykite.

2-2. Išankstinis sukūrimo patvirtinimas komanda.

Priklausomybės tikrinamos šiomis komandomis

mvn dependency:tree -Dverbose

komandą, o jei yra konfliktas, rodoma "praleista dėl konflikto". Taip pat galima susiaurinti išvestį tik iki tų sričių, kuriose yra konfliktų, kaip nurodyta toliau pateiktoje komandoje. ※"find" yra "Windows" komanda. "Linux" sistemoje tai yra "grep".

mvn dependency:tree -Dverbose | find "omitted for conflict"

Bibliotekų konfliktus galima patikrinti pažvelgus į pirmiau minėtų komandų rezultatus.

3. santrauka

Jei norite patikimai aptikti bibliotekų konfliktus, rekomenduojame "Įdiegti papildinius". Įdiegus papildinius užtikrinama, kad bet kokie konfliktai bus pastebėti, nes surinkimas nepavyks.

Dėkojame, kad žiūrėjote iki pabaigos.