Maven 2 如何在mvn部署中排除源jar?

Maven 2 如何在mvn部署中排除源jar?,maven-2,deployment,Maven 2,Deployment,当我运行“mvndeploy:deploy”时,maven将4个jar文件部署到我的内部远程存储库中 它们是: [模块名称]-1.jar [模块名称]-1.pom [模块名称]-1-sources.jar [模块名称]-1-tests.jar 实际上有更多的文件,例如md5和sha1文件,正在部署。但为了简单起见,我只是在这里跳过这些文件 有没有办法从部署过程中排除[module name]-1-sources.jar 我可以想到的一种方法是使用“mvndeploy:deployfile”,它允

当我运行“mvndeploy:deploy”时,maven将4个jar文件部署到我的内部远程存储库中

它们是:

[模块名称]-1.jar
[模块名称]-1.pom
[模块名称]-1-sources.jar
[模块名称]-1-tests.jar

实际上有更多的文件,例如md5和sha1文件,正在部署。但为了简单起见,我只是在这里跳过这些文件

有没有办法从部署过程中排除[module name]-1-sources.jar

我可以想到的一种方法是使用“mvndeploy:deployfile”,它允许我确定要部署哪个jar。但是由于我有几十个模块要部署,如果我能在pom.xml中配置部署文件排除,那就太好了。否则,我将不得不编写一个脚本来部署

谢谢,

Richard部署插件maven站点:

根据我在那里读到的内容,看起来您可以从部署中排除模块,但不能排除单个文件,至少现在还不能

如果您查看目标页面:

它没有显示任何特定的配置插件为您所寻找的。由于goals页面是由plugin类创建的,通过查看注释,我认为它们不具备这种能力

您可以做的一件事是创建一个不同的构建,它不会创建您不希望创建的JAR,即为该构建创建一个不同的程序集包或类似的东西,并在您尝试部署特定的包时运行该构建



编辑:koppernickus对此有完整的描述,我建议您看看他的帖子。

Maven
mvn部署:部署
在Maven过程中部署所有生成的工件(默认生命周期)。要不部署
[module name]-1-sources.jar
,只需(?)不生成一个。如果您正在使用
maven source plugin
附加源文件,请不要再使用它

如果您没有遇到这种情况,请提供更多详细信息:

  • 如何生成
    [module name]-1-sources.jar
    工件(哪个插件生成此工件?)
  • 为什么需要生成源,但不需要将它们部署到存储库
  • 有没有办法从部署过程中排除[module name]-1-sources.jar

    如果不想部署源,请不要生成源。因此,要么删除以下内容(必须包含在POM中),要么将其放在发布期间不使用或排除的配置文件中(我想知道在这种情况下何时使用源代码):

    
    org.apache.maven.plugins
    maven源插件
    罐子
    
    maven源代码插件的
    2.2版开始
    您可以使用配置选项跳过源代码生成,而无需将插件放入父pom的配置文件中:

      <!-- Do not generate a source jar -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-source-plugin</artifactId>
        <version>2.2.1</version>
        <configuration>
          <skipSource>true</skipSource>
        </configuration>
      </plugin>
    
    
    org.apache.maven.plugins
    maven源插件
    2.2.1
    真的
    
    让我假设您不应该跳过为模块生成源代码。 在这种情况下,这将是一个简单的解决方案,可帮助您处理此场景:

    在“maven source plugin”的执行部分的plugins部分中, 将“附加”属性设置为“假”。此配置将为您的模块生成sources.jar,但不会将其附加到项目的工件列表中

    示例代码段如下所示:

    
    org.apache.maven.plugins
    maven源插件
    ${source.plugin.version}
    模1源
    验证
    罐子没有叉子
    假的
    
    如果不想修改POM,可以通过在命令行中添加环境变量跳过源jar创建:

    -Dsource.skip
    (对于版本2.4之前的maven源插件,请参阅)

    -Dmaven.source.skip
    (对于maven源插件版本3.0.0+,请参阅或)

    
    org.apache.maven.plugins
    maven源插件
    3.0.1
    假的
    包裹
    附加来源
    罐子
    
    attach参数指定是否将java源附加到项目的工件列表。

    false

    @koppernickus我们在发行版repo中保留来源,但在快照repo中不保留来源。这可能是一个普遍的做法,在行业中需要由外部实体审计产品版本。@ SAL请考虑使用MVN发布插件()的任何工件被释放到非快照存储库。该过程如下所示:1。对于快照(假设这是最常见的情况):只需执行“mvn clean install”->将源作为附加工件删除即可。2.对于发布(假设很少使用):执行mvn release:prepare,然后执行mvn:perform-Anyways-如果您需要与leat的快照稍微不同(“更重”)的发布过程,请尝试此插件。在我们的案例中,它运行得非常好。这是对问题2的回答。我们确实使用了一个带有发布插件的部署概要文件来自动化这个过程。是的,它很重。但是审计过程要复杂得多。我们想提供二进制JAR供第三方构建,但不想提供源代码。这是正确的。我可以从父pom.xml中删除maven源插件。不过,我想这样做。我希望将maven源插件保留在父POM中。但是提供一个配置文件来禁用源插件。这将是理想的,但不确定是否可行。我会试试看。@Richard我不认为你可以“禁用”配置文件中的插件,所以你必须用另一种方法:将
    maven
    
      <!-- Do not generate a source jar -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-source-plugin</artifactId>
        <version>2.2.1</version>
        <configuration>
          <skipSource>true</skipSource>
        </configuration>
      </plugin>
    
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-source-plugin</artifactId>
        <version>3.0.1</version>
        <configuration>
            <attach>false</attach>
        </configuration>
        <executions>
            <execution>
                <phase>package</phase>
                <id>attach-sources</id>
                <goals>
                    <goal>jar</goal>
                </goals>           
            </execution>
        </executions>
    </plugin>