我有一个项目有两个单独的模块,使用sqlline和另一个依赖于jline的库(比如OtherLib).但是在不同的版本上.
Module1使用Sqlline依赖于jline 2.10
Module2使用OtherLib依赖于jline 0.9.94
这两个版本是不兼容的.所以我已经设置了类路径,使得模块1将在搜索$ HOME/lib目录/模块1文件夹第一和单词数在$ 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>
Run Code Online (Sandbox Code Playgroud)
也是为了让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>
Run Code Online (Sandbox Code Playgroud)
如何确保jline:jline:jar:2.10首先下载到../resources/lib文件夹?
如果您完全确定,您正在做什么,您可以使用类似的东西重新打包其中一个版本maven-shade-plugin.但请绝对肯定,你正在做什么.
随着maven-shade-plugin你可以创建一个新的Maven模块,说jline:jline_2_10:jar:1.0和使用jline:jline:jar:2.10作为一个依赖.然后maven-shade-plugin将它包装在你的jline_2_10-1.0.jar.
由于您的新工件有自己的groupId:artifactId组合,因此不会与其他jline:jline:jar:0.9.94工件发生冲突,因此您很乐意在类路径中同时使用它们.
我使用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>
Run Code Online (Sandbox Code Playgroud)
并在assembly.xml中
<fileSet>
<directory>../../resources/lib</directory>
<outputDirectory>${HOME}/lib/module1</outputDirectory>
<directoryMode>755</directoryMode>
<fileMode>644</fileMode>
<includes>
<include>jline-*</include>
</includes>
</fileSet>
Run Code Online (Sandbox Code Playgroud)
jline-0.9.94dependencySet与任何其他依赖项一样包含在 a 中。我希望这有帮助。:)
| 归档时间: |
|
| 查看次数: |
9811 次 |
| 最近记录: |