蚂蚁对maven的转换:正确的做法?

时间:2017-08-31 00:01:47

标签: maven ant maven-plugin

我的任务是将使用ant创建的java项目转换为maven

这就是项目的设置方式。

  1. 所有来源都存储在src目录中。

  2. ant的编译目标是编译整个src目录。

  3. ant的打包目标有几个子目标。

    每个目标都有不同的jar,其中包含includeexclude个目录。

  4. 这是我采取的方法。

    1. 找出所有依赖项。将它们存储在DependencyManagement

    2. parent pom部分中
    3. 创建一个模块并复制整个src目录。

    4. 编译了它。

    5. 尝试为不同的jar文件创建单独的模块。

    6. 问题:文件是不可分的。大多数文件都依赖于其他文件。我试着分开它们。它导致创建循环依赖。因此,这一步失败了。

      1. 使用不同的个人资料和maven-jar-pluginincludeexclude个包。
      2. 问题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 其中一个lib中包含多个image个文件。

        上述方法不会复制结果image中的jar个文件。

        我理解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 个答案:

答案 0 :(得分:0)

问题1的答案:您错过了</includes>标签。(可能是由于stackoverflow格式!)。我不确定您是否可以一次在两个配置文件上执行maven命令。这样做时,只会执行第二个配置文件。尝试分别在每个配置文件上执行命令。

问题2的答案:您错过了<resources>开头标签。(可能是由于stackoverflow格式!)。此外,如果要保留结构,也可以在<outputDirectory>标记中提及该结构,如下所示:

<outputDirectory>${basedir}/target/classes/src/main/java/jpl/mipl/mdms/FileService/komodo/ui/savannah/subscription/util/resources</outputDirectory>

这看起来可能很疯狂!,但是如果您的资源目录很少,则可能会起作用。如果您有更多的资源,那么这可能会很麻烦。但是无论如何,请检查这是否有帮助!