我正在处理一个多模块的Maven项目,该项目具有模块间依赖关系。例如:项目的一个模块,例如spark-module
依赖于来自同一项目的另一个模块(例如core-module
)。
core-module
依赖于jackson-datatype-jsr310:2.8.11
并且在spark-module
中,我添加了Apache Spark项目的测试JAR-spark-sql2.11:2.4.0
、spark-core2.11:2.4.0
和spark-catalyst2.11:2.4.0
用于单元测试目的。如您所见,这些Spark模块都是版本2.4.0,它在内部使用jackson-databind:2.6.7.1
。请参阅下面提供的POM:
父级
<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.sample</groupId>
<artifactId>spark-test</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<modules>
<module>core-module</module>
<module>spark-module</module>
</modules>
</project>
核心模块
<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>spark-test</artifactId>
<groupId>com.sample</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>core-module</artifactId>
<dependencies>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
<version>2.8.11</version>
</dependency>
</dependencies>
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
<testResources>
<testResource>
<directory>src/test/resources</directory>
<filtering>true</filtering>
</testResource>
</testResources>
</build>
</project>
火花模块
<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>spark-test</artifactId>
<groupId>com.sample</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>spark-module</artifactId>
<dependencies>
<dependency>
<groupId>com.sample</groupId>
<artifactId>core-module</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql_2.11</artifactId>
<version>2.4.0</version>
<scope>provided</scope>
<exclusions>
<exclusion>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>*</artifactId>
</exclusion>
<exclusion>
<groupId>com.fasterxml.jackson.module</groupId>
<artifactId>*</artifactId>
</exclusion>
<exclusion>
<groupId>org.javassist</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.11</artifactId>
<version>2.4.0</version>
<scope>provided</scope>
<exclusions>
<exclusion>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>*</artifactId>
</exclusion>
<exclusion>
<groupId>com.fasterxml.jackson.module</groupId>
<artifactId>*</artifactId>
</exclusion>
<exclusion>
<groupId>org.javassist</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-hive_2.11</artifactId>
<version>2.4.0</version>
<scope>provided</scope>
</dependency>
<!-- Test dependencies -->
<dependency>
<groupId>org.scalatest</groupId>
<artifactId>scalatest_2.11</artifactId>
<version>3.0.6</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.holdenkarau</groupId>
<artifactId>spark-testing-base_2.11</artifactId>
<version>2.4.0_0.12.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql_2.11</artifactId>
<version>2.4.0</version>
<type>test-jar</type>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.11</artifactId>
<version>2.4.0</version>
<type>test-jar</type>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-catalyst_2.11</artifactId>
<version>2.4.0</version>
<type>test-jar</type>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>net.alchim31.maven</groupId>
<artifactId>scala-maven-plugin</artifactId>
<version>3.2.2</version>
<executions>
<execution>
<goals>
<goal>compile</goal>
<goal>testCompile</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.scalatest</groupId>
<artifactId>scalatest-maven-plugin</artifactId>
<version>2.0.0</version>
<configuration>
<reportsDirectory>${project.build.directory}/surefire-reports</reportsDirectory>
<junitxml>.</junitxml>
<filereports>WDF TestSuite.txt</filereports>
</configuration>
<executions>
<execution>
<id>test</id>
<goals>
<goal>test</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.0.0</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<artifactSet>
<excludes>
<exclude>org.apache.spark:*</exclude>
</excludes>
</artifactSet>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
现在,当我构建spark-module
时,当maven shade插件开始使用时,它包括jackson-databind:2.6.7.1
而不是2.8.11(我以为它来自core-module
)。当我将以下排除项添加到test-jar
依赖项中时,它正确地捆绑了2.8.11版本的JAR,但这会使我的测试失败,因为这些依赖项被排除在外:
<exclusions>
<exclusion>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>*</artifactId>
</exclusion>
<exclusion>
<groupId>com.fasterxml.jackson.module</groupId>
<artifactId>*</artifactId>
</exclusion>
<exclusion>
<groupId>org.javassist</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>
若要控制jackson-databind
的版本,请在
节中添加一个条目,在该条目中指定所需的版本。这将覆盖所有可传递定义,并且比各种排除更容易处理。
因此,在第一步中,您可以尝试将其设置为
,并尝试测试是否工作。如果不是,那么您需要找到一个“中间版本”,它既适用于core-module
中的应用程序,也适用于您的测试。
我有一个巨大的java多模块应用程序,它使用gradle来管理构建和依赖关系。在其中一个模块中,假设模块1项目使用gretty插件 模块1/构建。格拉德尔 gretty对 我想将logback版本升级到最新版本。为此,我尝试了以下解决方案 但这些都不会对logback版本产生任何影响。现在需要一些建议吗
我在Scala项目中使用了官方的Gatling Gradle插件,我发现了一个问题,其中包含了依赖项,如 不包括可传递依赖项。也就是说,我有一个Gatling模拟类,它扩展了中的一个类,而依赖于这个类。但是,当我尝试运行模拟时,会出现如下错误 当我查看Gradle依赖时,我将视为的依赖项。我的IDE(IntelliJ)在点击代码时也能识别它。 我试着在一页文档中搜索这个插件,但是我没有看到任何有用
现在假设我有项目B,我们叫它酒吧。Bar是一个Android应用程序,Bar依赖于Foo。 嗯,我有。但是,当我在Foo from Bar中调用一个调用OkHttp的函数时,我会得到以下消息: 这样的事情可能发生吗?还是Bar需要手动依赖OkHttp以及Foo拥有的任何其他依赖项?
好的,这是我第一次尝试Java web start,所以我有了用Maven构建的jar作为依赖项存储库,并将其放入Apache根文件夹,包括文件夹库中的所有依赖项jar,然后我创建了密钥存储、HTML和JNLP文件。 我启动了Apache服务,并尝试访问localhost,它运行得很顺利,直到我用浏览器的java插件运行了jnlp文件,显示,我知道我的依赖项JAR不包括在内。所以我发现了如何在Ja
关于maven和传递依赖排除有几个问题。然而,我不能让它工作。我的pom中有一些依赖项,它们重新打包了一些库,以减小pom的大小。到目前为止,这是成功的。但是当我运行时,这些可传递的依赖项会被写入。类路径文件。尽管它们被排除在外,如以下摘录所示。 Apache Maven 3.3.3(7994120775791599e205a5524ec3e0dfe41d4a06;2015-04-22T13:57
我可以像这样创建sessionfactory bean。 但是,使用带有jar的类路径或列出hbm.xml文件的@EntityScan或@code仍然不能生成托管类型:classcom.opensymphony.workflow.spi.hibernate.HibernateMONtStep 我看到了一些答案,您使用不同的类来生成sessionFactory bean。有没有一种简单的方法可以获取