java - 有没有办法将 mywebapp-1.0-SNAPSHOT-classes.jar 从 maven-war-plugin 中的 attachClasses 配置更改为 mywebapp-1.0-SNAPSHOT.jar?

标签 java maven jakarta-ee jar war

根据 maven-war-plugin FAQ ,

If you can't move the classes to another project, you can deploy the classes and resources included in your webapp as an "attached" artifact, with a classifier, by using the following configuration:

<project>
  ...
  <artifactId>mywebapp</artifactId>
  <version>1.0-SNAPSHOT</version>
  ...
  <build>
    <plugins>
      <plugin>
        <artifactId>maven-war-plugin</artifactId>
        <version>2.3</version>
        <configuration>
          <attachClasses>true</attachClasses>
        </configuration>
      </plugin>
    </plugins>
  </build>
  ...
</project>

This will result in two artifacts being deployed: mywebapp-1.0-SNAPSHOT.war and mywebapp-1.0-SNAPSHOT-classes.jar.

有什么方法可以让我得到 mywebapp-1.0-SNAPSHOT.jar 而不是 mywebapp-1.0-SNAPSHOT-classes.jar

更新::

我希望同时生成 war 和 jar。虽然我可以通过应用 Changing packaging based on active profile in pom 中提到的配置文件来做到这一点.但我很想知道上述问题。

最佳答案

简短回答:,你不能。

通过查看 maven-war-plugin 源代码,在 WarMojo.java 中(第292行),可以看到,简单的修改ma​​ven-war-plugin配置是不能满足你的要求的:

    protected static File getTargetFile( File basedir, String finalName, String classifier, String type )
    {
        if ( classifier == null )
        {
            classifier = "";
        }
        else if ( classifier.trim().length() > 0 && !classifier.startsWith( "-" ) )
        {
            classifier = "-" + classifier;
        }

        return new File( basedir, finalName + classifier + "." + type );
    }

由于 classesClassifier 参数默认为 "classes",您没有机会修改此行为:classifier 永远不会是

在文件生成后重命名该文件,或者修改 ma​​ven-war-plugin 的源代码,并将其用作自定义插件。

作为最后的考虑,不建议使用 null classesClassifier:它可能会产生误导。不过我不知道您的项目要求。

希望对您有所帮助。

关于java - 有没有办法将 mywebapp-1.0-SNAPSHOT-classes.jar 从 maven-war-plugin 中的 attachClasses 配置更改为 mywebapp-1.0-SNAPSHOT.jar?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17402543/

相关文章:

java - 未找到 ManagedExecutorService

jakarta-ee - 为什么 @SessionsScoped EJB 会在所有用户之间共享?

jakarta-ee - 启用禁用数据表中的复选框

Java replaceAll抛出空指针异常

java - 我如何重写此代码片段,以便我不手动/显式调用注入(inject)器?

java - java在屏幕上显示鼠标坐标的问题

maven - 尽管有明确的插件和 pluginManagement 版本,为什么 Maven 使用了错误的插件?

java - 设置 OpenNLP : Text Detection using the Vision java API

java - 自定义样式 setDropDownViewResource Android Spinner

java - Maven编译错误: package org. junit不存在