maven-source-plugin 构建 sources.jar,但它不能被 IDE 使用



我有一个Maven项目,它是从生成的源代码中构建的。我使用的是maven源插件,配置如下:

<profiles>
    <profile>
        <id>release</id>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-source-plugin</artifactId>
                    <version>2.4</version>
                    <executions>
                        <execution>
                            <id>attach-sources</id>
                            <goals>
                                <goal>jar-no-fork</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
                ...

我使用mvn clean install -P release构建。这会生成一个包含所有源文件的${artifactId}-${version}-sources.jar文件,但显然它的打包不正确,因为IDE无法识别源文件是否可用。其他一切都能正常构建和工作,包括Javadocs。

该库的主要入口点是net.mintern.primitive.Primitive。当项目构建时,Java文件在target/generated-sources/net/mintern/primitive/Primitive.java生成。然而,在sources.jar中,Primitive.java(以及primitive目录中的所有其他内容)位于JAR的根目录。JAR中没有父目录(net/mintern/primitive)。

这正常吗,或者这可能是我问题的原因?我尝试了不同的includes,改为jar而不是jar-no-fork,显式添加<attach>true</attach>,使用build-helper-maven-pluginadd-source,可能还有更多我忘记的内容—没有任何效果。Maven源插件配置似乎没有提供任何调整JAR中路径的方法。

你能帮我弄清楚这里发生了什么事吗?您可以通过添加以下依赖项将项目包含在POM中:

<groupId>net.mintern</groupId>
<artifactId>primitive</artifactId>
<version>1.2</version>

完整的POM可以在GitHub上查看,如果你愿意尝试构建它,你可以用git clone https://github.com/mintern-java/primitive.gitgit checkout 1.2来查看有问题的项目。

编辑:我使用maven-jar插件和构建助手maven-plugin的不合理组合解决了这个问题;POM是1.2.1版本。不过,我仍然对一个合适的maven源插件修复程序感兴趣。

除此之外,我的假设是您对fmpp-maven插件的配置:

<outputDirectory>target/generated-sources/net/mintern/primitive</outputDirector‌​y>

似乎是个问题。你应该把它改成:

<outputDirectory>target/generated-sources/</outputDirectory> 

但你必须在你的freemaker模板中给出一个包。此外,你应该检查freemarker插件的文档,看看outputDirectory是否默认没有配置上述值。如果是这样的话,你可以从你的pom中完全删除这个条目。(遵循默认值)。约定高于配置。

相关内容

  • 没有找到相关文章

最新更新