【问题标题】:How to resolve dependency between files generated by maven plugin at compile time?如何解决maven插件在编译时生成的文件之间的依赖关系?
【发布时间】:2014-01-07 04:58:13
【问题描述】:

好的,让我尽量让我的问题不那么令人困惑。

我有一个带有一些 Maven 插件的标准 maven 项目 -

1) maven-antrun-plugin
2) Custom maven plugin, say, my-maven-plugin
3) jaxws-maven-plugin

现在是复杂的部分。

第一个插件生成一些 .java 文件,我目前将它们放在“${project.build.directory}/java”中

第二个插件生成另一组 .java 文件,我将所有这些文件再次放在“${project.build.directory}/java”下。但是,它们被放置在不同的包结构下。

这两个插件都在“generate-sources”阶段运行。

现在我的第三个插件 jaxws-maven-plugin 尝试使用由第一个和第二个插件生成的文件的类文件作为 SEI 来生成 WSDL。但是在编译期间,maven 不会创建类文件,并且插件会出错并显示“找不到类”消息。

那么我该如何解决这个问题呢?此外,由于我在“生成源”阶段出错,因此在 target/classes 目录中我的项目中看不到任何其他源文件的 .class 文件。

哦,这是另一个转折点。我的一些源文件在代码中导入了这些编译时生成的源文件(你不知道我现在正在寻找这个开发人员有多糟糕!!)

我已尝试以最佳方式描述我的问题,因此请随时询问任何其他细节或澄清。

【问题讨论】:

  • 您可以尝试将生成的类移动到 maven 模块中,并使您的主项目依赖它。在这种情况下,当您构建主项目时,模块中的类将在您的本地 maven 存储库中以 jar 的形式呈现。

标签: maven maven-plugin maven-antrun-plugin maven-mojo jaxws-maven-plugin


【解决方案1】:

jaxws-maven-plugin之前手动运行build-helper-maven-pluginmaven-compile-plugin

<build>
    <plugins>
        <plugin>
            <artifactId>maven-antrun-plugin</artifactId>
            ...
            <executions>
                <execution>
                    <phase>generate-sources</phase>
                </execution>
                ...
            </executions>
        <plugin>
        <plugin>
            ...
            <artifactId>my-maven-plugin</artifactId>
            ...
            <executions>
                <execution>
                    <phase>generate-sources</phase>
                </execution>
                ...
            </executions>
        <plugin>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>build-helper-maven-plugin</artifactId>
            <executions>
                <execution>
                    <id>add-source</id>
                    <phase>generate-sources</phase>
                    <goals>
                        <goal>add-source</goal>
                    </goals>
                    <configuration>
                        <sources>
                            <source>some directory</source>
                            ...
                        </sources>
                    </configuration>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <artifactId>maven-compile-plugin</artifactId>
            ...
            <executions>
                <execution>
                    <phase>generate-sources</phase>
                </execution>
                <goals>
                    <goal>compile</goal>
                </goals>
            </executions>
        <plugin>
        <plugin>
            <artifactId>jaxws-maven-pluginn</artifactId>
            ...
        <plugin>

    </plugins>
</build>

我还没有测试过,但我认为它应该可以工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多