我有一个项目,其中有两个使用sqlline的单独模块和另一个依赖jline的库(例如OtherLib)。但是在不同版本上。
Module1使用Sqlline取决于 jline 2.10
Module2使用OtherLib取决于 jline 0.9.94
并且这两个版本不兼容。因此,我设置了类路径,以便Module1首先在 $ HOME / lib / module1 文件夹中搜索,而Module2首先在
$ HOME / lib 文件夹中搜索。
有没有一种方法可以指定maven首先将工件下载到源目录(例如 ../resources/lib
),然后在打包期间将其复制到软件包中assembly.xml
?
我知道要从源目录复制以下代码。
<fileSets>
<fileSet>
<directory>../resources/lib</directory>
<outputDirectory>${HOME}/lib/module1</outputDirectory>
<directoryMode>755</directoryMode>
<fileMode>644</fileMode>
<includes>
<include>*.jar</include>
</includes>
</fileSet>
</fileSets>
还可以使Maven下载我可以使用的依赖项(适用于Module2)
<dependencySets>
<dependencySet>
<useProjectArtifact>false</useProjectArtifact>
<outputDirectory>${HOME}/lib</outputDirectory>
<directoryMode>755</directoryMode>
<fileMode>644</fileMode>
<includes>
<include>jline:jline:jar:0.9.94</include>
</includes>
</dependencySet>
<dependencySets>
如何确定jline:jline:jar:2.10
首先下载到 ../resources/lib 文件夹?
我在这里使用 maven-dependency-plugin* 找到了答案 *
在 pom.xml中
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.1</version>
<executions>
<execution>
<id>copy-model</id>
<phase>package</phase>
<goals>
<goal>copy</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>jline</groupId>
<artifactId>jline</artifactId>
<version>2.10</version>
<type>jar</type>
</artifactItem>
<artifactItems>
<outputDirectory>../../resources/lib</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
<plugins>
<build>
并在 assembly.xml中
<fileSet>
<directory>../../resources/lib</directory>
<outputDirectory>${HOME}/lib/module1</outputDirectory>
<directoryMode>755</directoryMode>
<fileMode>644</fileMode>
<includes>
<include>jline-*</include>
</includes>
</fileSet>
jline-0.9.94``dependencySet
与任何其他依赖项一样包含在中。我希望这有帮助。:)
我正在使用maven 3.1.1,我有以下问题 我有一个主项目(pom.xml),它将被编译为WAR文件。它有两个模块。 模块1有以下内容(请注意工件的版本) 模块2有以下内容(请注意工件的版本) 因此,我的项目依赖于同一个库的两个版本。问题是库版本2与版本1不向后兼容。所以,我不能只包括版本2。 我正在考虑修改模块1以使用库版本2,但这需要大量时间。因此,我正在寻找一种方法来包含库的两个版本。
有什么方法可以使用两个不同的配置文件在settings.xml文件执行两个不同的构建在不同的服务器上?例如:在我的settings.xml文件中,我有两个配置文件: 现在,我想要一个项目的“test1”配置文件和另一个项目的“test2”,我希望我的pom.xml构建属性从settings.xml配置文件的属性中获取。 如果我将两个概要文件都保存在“activeProfiles”中,那么我的两个项
问题内容: 我有一个Java Web项目,我们部署在两个不同客户的服务器上,其中99%的代码是相同的,现在我有两个ApplicationBuilder,该类包含为每个客户定制的类。 每当我要部署新版本时,我都必须手动注释一行,使用maven进行构建,取消注释该行,注释另一行,然后再次构建。 我想避免所有这些,最好的事情可能只是造成两次不同的战争。 有什么好方法吗?我不使用(也不喜欢)依赖注入框架,
我使用低于IDE使用的系统环境JAVA_HOME(1.8)启动NetBeans IDE12.0(14)。Maven执行的IDE输出窗口似乎显示项目是用JDK14的JAVA_HOME运行的,以这种方式运行项目文件。 但是exec-maven-plugin在 这似乎表明Maven在IDE中运行在1.8下,忽略了IDE自己的重写设置JAVA_HOME 14。它使用JAVA_HOME中设置的JDK,因为如
我有一个具有以下结构的maven项目 即Project有它的pom.xml(作为pom的包)并有模块。每个模块都有一个节中,可以将其设置为“project”的工件(在根pom.xml中定义),也可以将其设置为任何其他project2/project3/projectn工件。 现在,由于这个原因,我看看如果Project1的根pom.xml设置为0.0.1-snapshot,并且如果我想创建一个版本
问题内容: 我有一个Java项目正在使用两个导入的具有相同类()的jar 。导入类时,有没有一种方法可以明确说明要使用哪个jar?使用: 似乎按照构建路径顺序的顺序使用该类,但是由于某种原因,似乎并非如此 在运行时。我正在Eclipse中构建项目。 问题答案: 您不能仅在Java源代码中执行所要求的操作。Java不是为此而设计的。 这是一种糟糕的情况,只有使用自定义类加载器才能可靠地处理它们,每个