【问题标题】:Make netbeans attach maven sources to artifacts使 netbeans 将 Maven 源附加到工件
【发布时间】:2011-03-31 15:30:41
【问题描述】:

我遇到了一些我想介入的第三方库的问题。右键单击库节点时,Netbeans 提供“下载源”选项。这会正确地从 svn 下载源代码,源图标附加到依赖节点,一切都很好。但是,当我打开其中一个类时,它会给我一个生成的骨架,就像没有附加源时一样。此外,当存在 maven 源时,似乎没有手动附加本地源的选项,所以我无法解决这个问题。

其他人对此功能有何体验?

仅供参考,有问题的库是 3.1.0 http://www.igniterealtime.org/projects/smack/index.jsp

【问题讨论】:

    标签: maven-2 netbeans


    【解决方案1】:

    右键单击库节点时,Netbeans 提供“下载源”选项。这会正确地从 svn 下载源代码,源图标附加到依赖节点,一切都很好。

    如果我们在这里谈论 Maven,我认为这不是正在发生的事情。 下载源代码功能告诉 Maven 从Maven 存储库下载给定依赖项的sources 工件(例如foo-1.0-SNAPSHOT-sources.jar)。显然,这仅在给定依赖项提供-sources jar 时才有效。但smack-3.1.0 的情况并非如此。

    【讨论】:

    • 似乎是正确的,让我感到困惑的部分是 pom 有一个 scm 元素,其中包含一个 svn repo。 Netbeans 还为各个依赖项提供了检出源选项,所以我认为它与下载源选项的机制相同。
    【解决方案2】:

    正如 Pascal 所写,源工件的解析是通过约定发生的,因此如果依赖项位于:

    <dependency>
        <groupId>com.yourcompany</groupId>
        <artifactId>yourartifact</artifactId>
        <version>1.2.3</version>
    </dependency>
    

    它将在以下位置查找源工件:

    <dependency>
        <groupId>com.yourcompany</groupId>
        <artifactId>yourartifact</artifactId>
        <version>1.2.3</version>
        <classifier>sources</classifier>
    </dependency>
    

    所以你可以做的是从source download page 下载源代码,从中创建一个jar 并运行install:install-file,如on the usage page 所示:

    mvn install:install-file -Dfile=your-created-source.jar \
                             -DgroupId=jivesoftware \
                             -DartifactId=smack \
                             -Dversion=3.1.0 \
                             -Dclassifier=sources \
                             -Dpackaging=jar \
                             -DgeneratePom=false
    

    这样约定将起作用,netbeans 将自动找到您的源。

    编辑:添加包装

    【讨论】:

    • +1 提供逐步实用的解决方法(从而真正回答问题)
    • 成功了,但我需要添加 -Dpackaging=jar 才能让它工作。谢谢。
    猜你喜欢
    • 2015-08-07
    • 1970-01-01
    • 2011-04-09
    • 2012-01-04
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-26
    相关资源
    最近更新 更多