我的任务是将使用ant
创建的java项目转换为maven
。
这就是项目的设置方式。
-
所有源都存储在
src
目录中。 -
ant
的编译目标是编译整个src
目录。 -
ant
的包装目标有几个子目标。每个目标都有不同的 jar,这些 jar 具有
include
或exclude
目录。
这就是我采取的方法。
-
找出所有依赖项。将它们存储在
parent pom
DependencyManagement
部分中 -
创建一个模块并复制整个
src
目录。 -
编译了它。
-
已尝试为不同的
jar
文件创建单独的模块。
问题:文件是不可分割的。大多数文件都依赖于其他文件。我试着把它们分开。它会导致创建循环依赖关系。因此,此步骤失败。
- 使用不同的配置文件和
maven-jar-plugin
来include
或exclude
包。
问题1当我尝试这个mvn install -P profile1,profile2
时,target
只有jar
文件供profile2
。他们都有maven-jar-plugin
,每个人都有不同的finalName
。
<profile>
<id>profile1</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<includes>
<include>**/src/.../profile1/**</include>
<finalName>profile1-lib</finalName>
</configuration>
</plugin>
</plugins>
</build>
</profile>
是有不同的命令还是我做错了什么?
问题 2其中一个库包含多个image
文件。
上述方法不会复制结果jar
中的image
文件。
我知道maven
想要目录中resources
资源。我将移动图像,但现在我正在尝试将它们包含在jar
中。
我添加了maven-resources-plugin
.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
<executions>
<execution>
<phase>validate</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${basedir}/target/classes</outputDirectory>
<resource>
<directory>src/main/java/jpl/mipl/mdms/FileService/komodo/ui/savannah/subscription/util/resources</directory>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
当我运行mvn install -P profile1
时,我可以看到日志显示Copying # resources
。
我还可以看到它们被复制到目标/类。 我提供给插件的路径。但它们都被复制到该目录。
我想保留结构,结果jar
仍然没有。
答:我必须将它们移动到resources
目录中。maven
是严格的。 我应该做些什么不同的事情?
额外问题我是否使用了正确的插件?还是我应该使用更高效的插件?
谢谢。
回答问题 1:您错过了</includes>
标签。可能是因为堆栈溢出格式!我不确定您是否可以一次在两个配置文件上执行 maven 命令。执行此操作时,仅执行第二个配置文件。尝试在每个配置文件上分别执行该命令。
回答问题 2:您错过了<resources>
开始标记。(可能是因为堆栈溢出格式!此外,如果您想保留结构,也可以在<outputDirectory>
标签中提及结构,如下所示:
<outputDirectory>${basedir}/target/classes/src/main/java/jpl/mipl/mdms/FileService/komodo/ui/savannah/subscription/util/resources</outputDirectory>
这可能看起来很疯狂!,但如果你的资源目录很少,可能会起作用。如果您有更多的资源,那么这可能会变得很麻烦。但无论如何,检查这是否有帮助!