如何在mvn deploy中排除源jar?

Ric*_*ard 18 deployment maven-2

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

他们是:

[module-name] -1.jar
[module-name] -1.pom
[module-name] -1-sources.jar
[module-name] -1-tests.jar

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

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

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

谢谢,
理查德

Mat*_*t F 18

从版本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>
Run Code Online (Sandbox Code Playgroud)


Pin*_*ino 6

如果您不想修改您的POM,可以通过在命令行中添加环境变量来跳过源jar的创建:

-Dsource.skip(对于2.4版之前的maven-source-plugin ,请参见2.4 doc

要么

-Dmaven.source.skip(对于maven-source-plugin 版本3.0.0+,请参阅3.0.1 doc最新版本

  • 根据官方文档,我认为正确的属性是“-Dmaven.source.skip=true”:https://maven.apache.org/plugins/maven-source-plugin/jar-mojo.html (2认同)

Pas*_*ent 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>
Run Code Online (Sandbox Code Playgroud)


ape*_*ins 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对此有完整的描述,我建议您查看他的帖子。