当前位置: 首页 > 知识库问答 >
问题:

如何覆盖默认的maven-install插件行为?

李良策
2023-03-14

我需要定制的工件安装,不知道如何覆盖默认的(从默认的maven生命周期)。所以我的问题是:

如何在我的pom.xml中配置maven install插件,使其不进行默认安装并执行我的自定义安装文件目标?

我尝试了没有id和默认安装id,但没有帮助。

更新:从提供的答案 - 这对我不起作用(我在日志中看到两次安装尝试)。

<pluginManagement>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-install-plugin</artifactId>
      <executions>
        <execution>
          <id>default-install</id>
          <phase>none</phase>
        </execution>
      </executions>
    </plugin>
  </plugins>
</pluginManagement>
<plugins>
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-install-plugin</artifactId>
    <version>2.3.1</version>
    <executions>
      <execution>
        <id>install-jar-lib</id>
        <goals>
          <goal>install-file</goal>
        </goals>
        <phase>install</phase>
        <configuration>
          <file>${project.build.directory}/${project.build.finalName}.jar</file>
          <generatePom>false</generatePom>
          <pomFile>pom.xml</pomFile>
          <packaging>jar</packaging>
          <version>${unicorn.version}</version>
        </configuration>
      </execution>
    </executions>
  </plugin>

共有2个答案

丁书
2023-03-14

如果您至少有 2.4 版的安装插件,则可以跳过默认安装。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-install-plugin</artifactId>
    <version>2.4</version>
    <configuration>
        <skip>true</skip>
    </configuration>
</plugin>

然后,您可以通过添加以下内容将另一个插件(ant run插件或任何其他插件)绑定到这个阶段

 <phase>install</phase>

到插件的执行部分,您可以运行新的安装过程

 mvn install
谷梁卓
2023-03-14

要禁用maven安装插件,请执行以下操作:

<build>
  <pluginManagement>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-install-plugin</artifactId>
        <version>2.3.1</version>
        <executions>
          <execution>
            <id>default-install</id>
            <phase>none</phase>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </pluginManagement>
</build>

以及为了执行您的自定义安装目标:

<build>
  <plugins>
    <plugin>
      <groupId>yourGroupId</groupId>
      <artifactId>yourArtifactId</artifactId>
      <executions>
        <execution>
          <id>custom-install</id>
          <phase>install</phase>
          <goals>
            <goal>yourGoal</goal>
          </goals>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>
 类似资料:
  • 和子级POM: 在子pom上运行'mvn clean install'将运行编译器插件的两个执行,并且只运行antrun插件的第一个执行,尽管每个插件的第一个执行都绑定到一个阶段。 现在将pluginManagement移动到子POM:

  • 我有一个RESTAPI,我不想强迫客户端发送请求参数。我有将近400个api方法,我不想将所有参数设置为“required=false” 我想覆盖Spring RequestParam的默认行为。我想将RequestParam接口的“required”属性的默认值设置为“false”。 有什么方法可以覆盖它吗?如果我不能或这不是最佳实践,有什么方法可以解决上述问题。

  • 我想重写maven checkstyle插件中的configLocation选项。pom.xml的示例部分是: 正如上面可以看到的,checkstyle-config是一个单独的maven项目,它包含用于样式检查的规则,用于规则的配置文件是blahblah/checkStyle/checkStyle.xml。如果我必须重写blahlah/checkstyle/checkstyle.xml并使用存储

  • 问题内容: 我已经能够覆盖所有名称以“ android:”为前缀的主题,但是Android themes.xml还定义了似乎无法被覆盖的属性。例如: colorTheground是在Theme.Light xml中定义的,但是在此处添加它可以使我 错误。如何为整个应用程序覆盖该样式? 问题答案: 您可以用修改属性(如)的方式覆盖标准属性,只是不要忘记添加如下前缀:

  • 问题内容: 我想覆盖Java外观。我只想显示不同的按钮。 我想要Windows Look and Feel的所有功能,但仅按钮有所不同。希望你明白我的意思。 还告诉我如何制作圆形的JtabbedPane ??? 问题答案: 自定义GUI类 调用您的自定义GUI类

  • 问题内容: 我有一个模板与此: Django自动将此翻译为Terminarsesión西班牙语。但是,我想将其翻译为Cerrarsesión。 我试图将此文字添加到.po文件中,但是在编译消息时出现错误,指出该文字重复。 有没有一种方法可以更改/覆盖默认的Django翻译? 谢谢。 问题答案: 最简单的方法是收集在django.contrib.admin语言环境文件夹中找到的.po文件,然后重新编