0

我有一个从生成的源构建的Maven 项目。我使用的是maven-source-plugin,配置如下:

<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.jarPrimitive.javain (以及目录中的所有其他内容primitive)位于 JAR 的根目录中。net/mintern/primitiveJAR 中不存在父目录 ( )。

这是正常的,还是这可能是我的问题的原因?我尝试了不同的includes、更改为jar而不是jar-no-fork、明确地添加<attach>true</attach>、使用build-helper-maven-plugintoadd-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.git, 然后. 查看有问题的项目git checkout 1.2

编辑:我设法使用 maven-jar-plugin 和 build-helper-maven-plugin 的邪恶组合解决了这个问题;POM 是 1.2.1 版。不过,我仍然对适当的 maven-source-plugin 修复感兴趣。

4

1 回答 1

1

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

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

似乎是问题所在。您应该将其更改为:

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

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

于 2015-03-20T09:28:31.367 回答