如何在maven部署中排除源jar?

时间:2010-04-05 20:26:31

标签: maven-2 deployment

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

他们是:

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

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

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

我能想到的一种方法是使用“mvn deploy:deploy-file”,它允许我查明要部署的jar。但是,由于我要部署几十个模块,如果我可以在pom.xml中配置部署文件排除,那将会很好。否则,我将不得不编写一个脚本来部署。

谢谢,
理查德

7 个答案:

答案 0 :(得分:17)

2.2的版本maven-source-plugin开始,您可以使用配置选项跳过源代码,而无需将插件放在父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>

答案 1 :(得分:5)

  

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

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

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-source-plugin</artifactId>
      <executions>
        <execution>
          <goals>
            <goal>jar</goal>
          </goals>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>

答案 2 :(得分:4)

让我假设您不要跳过为模块生成源代码。 在这种情况下,这将是一个简单的解决方案,可以帮助您处理这种情况:

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

示例代码段位于:

<plugins>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-source-plugin</artifactId>
        <version>${source.plugin.version}</version>
        <executions>
            <execution>
                <id>module1-sources</id>
                <phase>verify</phase>
                <goals>
                    <goal>jar-no-fork</goal>
                </goals>
                <configuration>
                    <!-- The below specified attribute 'attach' will disable the sources.jar not included in the artifact list -->
                    <attach>false</attach>
                </configuration>
            </execution>
        </executions>
    </plugin>
</plugins>

答案 3 :(得分:4)

如果您不想修改POM,可以通过将git pull origin partnersBranch添加到mvn命令行来跳过创建源jar。

答案 4 :(得分:2)

部署插件maven网站:

http://maven.apache.org/plugins/maven-deploy-plugin/index.html

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

如果您查看目标页面:

http://maven.apache.org/plugins/maven-deploy-plugin/plugin-info.html

它没有显示您正在寻找的插件的任何特定配置。由于目标页面是从插件类创建的,通过查看注释,我会说他们没有这种能力。

你可以做的一件事是创建一个不会创建你不想创建的jar的不同构建 - 即为该构建创建一个不同的程序集包等,并在你运行时运行构建尝试部署特定的包。


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

答案 5 :(得分:1)

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

如果您遇到的情况不是这样,请提供更多详细信息:

  1. 如何生成[module-name]-1-sources.jar工件(哪个插件生成此工件?)
  2. 为什么需要生成源,但不需要将它们部署到存储库?

答案 6 :(得分:0)

<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>

attach参数指定是否将Java源代码附加到项目的工件列表。
<attach>false</attach>