我有一个通用的问题,我知道它是无法解决的,直到一个点,根据搜索结果,我可以在网上找到。
这是指排除pom.xml文件中定义的插件下载的依赖项。
我在下面提供了我的pom.xml文件。
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.application</groupId>
<artifactId>SemanticFramework</artifactId>
<packaging>war</packaging>
<version>1.0.0-SNAPSHOT</version>
<name>SemanticFramework Jersey Webapp</name>
<build>
<finalName>SemanticFramework</finalName>
<plugins>
<!-- https://mvnrepository.com/artifact/org.apache.maven.plugins/maven-war-plugin -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.3.2</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.11.0</version>
</plugin>
<!-- Run the application using "mvn embedded-glassfish:run" -->
<plugin>
<groupId>org.glassfish</groupId>
<artifactId>maven-embedded-glassfish-plugin</artifactId>
<version>${glassfish.version}</version>
<configuration>
<goalPrefix>embedded-glassfish</goalPrefix>
<app>C:/Users/mariarousi/eclipse-workspace/target/${project.build.finalName}.war</app>
<autoDelete>true</autoDelete>
<port>8080</port>
</configuration>
<dependencies>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-servlet</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
</dependency>
</dependencies>
</plugin>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId>
<version>1.4.20</version>
</dependency>
<dependency>
<groupId>org.codehaus.jettison</groupId>
<artifactId>jettison</artifactId>
<version>1.5.4</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-servlet</artifactId>
<version>${jersey.version}</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-json</artifactId>
<version>${jersey.version}</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.8.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-client</artifactId>
<version>${jersey.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.13.5</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.13</version>
</dependency>
<dependency>
<groupId>org.glassfish.extras</groupId>
<artifactId>glassfish-embedded-web</artifactId>
<version>${glassfish.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.9.0</version>
</dependency>
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20230227</version>
</dependency>
<dependency>
<groupId>com.mashape.unirest</groupId>
<artifactId>unirest-java</artifactId>
<version>1.4.9</version>
</dependency>
<dependency>
<groupId>org.apache.jena</groupId>
<artifactId>apache-jena-libs</artifactId>
<type>pom</type>
<version>4.2.0</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-client</artifactId>
<version>1.19.4</version>
</dependency>
<dependency>
<groupId>com.openlink.virtuoso</groupId>
<artifactId>virtjdbc4</artifactId>
<version>4.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/virtjdbc4.jar</systemPath>
</dependency>
<dependency>
<groupId>com.openlink.virtuoso</groupId>
<artifactId>virt_jena3</artifactId>
<version>3.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/virt_jena3.jar</systemPath>
</dependency>
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>5.0.0-alpha.3</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.googlecode.json-simple/json-simple -->
<dependency>
<groupId>com.googlecode.json-simple</groupId>
<artifactId>json-simple</artifactId>
<version>1.1.1</version>
</dependency>
</dependencies>
<properties>
<jersey.version>1.19</jersey.version>
<glassfish.version>3.1.1</glassfish.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
</project>
这个想法是,我想排除依赖,这是由上述pom文件中定义的插件导入的原因,他们提供了一些漏洞。更具体地说,我想排除jsoup 1.10.2
,它是由我使用的一个插件自动导入的(不确定是哪一个,但我猜是org.apache.maven.plugins)。
正如我所知,直到一个点,这个操作是不可能的检查也在这里(https://www.baeldung.com/mvn-plugin-dependency-exclusion),但由于我不是一个纯粹的java开发人员,我不确定我是否错过了一些允许这样的功能。
我还想提一下,使用的java是jdk-11(在火灾开始之前,我知道我知道这是java的超旧版本,但应用程序最初是在它的基础上构建的,客户端不希望在这方面进行更改)。
所以任何想法都非常受欢迎。
另外,如果这个问题在堆栈溢出社区的手册中没有被正式定义,我表示歉意,但我也不是堆栈溢出的作者。
1条答案
按热度按时间bq9c1y661#
我可以建议一个快速和简单的解决方案,有点“快速和肮脏”的。只需直接在pom中导入
jsoup
依赖项的更高版本,这是干净的漏洞,这将被纳入您的最终jar并覆盖从插件导入的可传递jsoup 1.10.2
。如果有任何冲突,Maven使用在pom中找到的“最接近”根依赖项。这意味着如果你有两个不同的
jsoup
依赖导入到你的项目中,一个直接从你的pom导入,另一个以传递的方式导入,第一个将被导入到你的最终jar中。您可以阅读有关它的信息,也可以专门添加
<provided>
之类的标记,以表明您将提供版本和依赖项。重要的一点是:请检查插件是否兼容并与其他版本的
jsoup
兼容。请确保它与您正在导入的新版本一起工作,而不是它试图导入的版本。此外,请确保您使用任何插件的最新版本,因为这些插件非常受欢迎,并且大多数插件都修复了每个版本中的漏洞,因此,与其使用传递依赖关系,只需更新和升级插件本身的版本。