Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用特定配置文件时禁用maven插件_Maven - Fatal编程技术网

使用特定配置文件时禁用maven插件

使用特定配置文件时禁用maven插件,maven,Maven,我正在寻找一种方法,如果使用特定的配置文件运行,则禁用插件执行 这是相反的 我的用例:我的Maven构建有一大堆插件,但是当在我的开发机器上运行时,我想跳过其中的一些。我不想在本地评论这些插件,而是希望能够使用“dev”概要文件运行构建。插件将继续在我的持续构建中运行 想法? 定义您的pom,以便在开发模式下只有您需要的插件 定义开发人员配置文件 定义一个包含您想要/需要的所有插件的生产配置文件 将生产配置文件定义为默认配置文件 示例pom: <profiles> <pr

我正在寻找一种方法,如果使用特定的配置文件运行,则禁用插件执行

这是相反的

我的用例:我的Maven构建有一大堆插件,但是当在我的开发机器上运行时,我想跳过其中的一些。我不想在本地评论这些插件,而是希望能够使用“dev”概要文件运行构建。插件将继续在我的持续构建中运行

想法?

  • 定义您的pom,以便在开发模式下只有您需要的插件
  • 定义开发人员配置文件
  • 定义一个包含您想要/需要的所有插件的生产配置文件
  • 将生产配置文件定义为默认配置文件
示例pom:

<profiles>
  <profile>
    <id>production</id>

    <activation>
      <activeByDefault>true</activeByDefault>
    </activation>

    <build>
      <plugins>
        <!-- 
        <plugin>
          ...
        </plugin>
        -->
      </plugins>
    </build>
    </profile>

    <profile>
      <id>dev</id>
      <!-- Some other logic here, if necessary.
           Otherwise, there's no need for another profile. -->
    </profile>
</profiles>
要在生产模式下运行,只需使用正常步骤:

mvn compile
如果您不想/不需要在您的开发配置文件中定义任何特殊的内容,您可以省略其声明,并像这样调用您的开发模式(
禁用配置文件):

请注意:您可能需要转义感叹号,因为它是bash中的一个特殊字符:

mvn -P\!production compile

当特定配置文件处于活动状态时,有一种简单的方法可以禁用插件执行。

首先,您需要为插件执行添加一个标识符,如:

<build>
    <plugins>
        <!-- (...) -->
        <plugin>
            <groupId>nl.geodienstencentrum.maven</groupId>
            <artifactId>sass-maven-plugin</artifactId>
            <version>2.1</version>
            <executions>
                <execution>
                    <id>styles-compilation</id> <!-- plugin execution identifier -->
                    <phase>generate-resources</phase>
                    <goals>
                        <goal>update-stylesheets</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
sass maven插件将被执行,但在运行时:

mvn clean package -P no-sass

sass maven插件将不会执行。

基于Krzysiek的回答,您不需要定义显式执行,只需查看maven提供的输出并禁用默认执行

例如,给定maven的以下输出:

[INFO] --- maven-resources-plugin:2.7:copy-resources (prepare-dockerfile) @ tilbud ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
...
[INFO]
[INFO] --- maven-resources-plugin:2.7:resources (default-resources) @ tilbud ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
....
[INFO]
[INFO] --- maven-compiler-plugin:3.5.1:compile (default-compile) @ tilbud ---
...
[INFO]
[INFO] --- maven-resources-plugin:2.7:testResources (default-testResources) @ tilbud ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
...
[INFO]
[INFO] --- maven-compiler-plugin:3.5.1:testCompile (default-testCompile) @ tilbud ---
....
生成的默认执行名称列在插件和目标后面的括号中。以下配置文件禁用上述插件:

<profiles>
    <profile>
        <id>packageOnly</id>
        <build>
            <pluginManagement>
                <plugins>
                    <plugin>
                        <artifactId>maven-compiler-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>default-compile</id>
                                <phase>none</phase>
                            </execution>
                            <execution>
                                <id>default-testCompile</id>
                                <phase>none</phase>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <artifactId>maven-surefire-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>default-test</id>
                                <phase>none</phase>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <artifactId>maven-resources-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>default-resources</id>
                                <phase>none</phase>
                            </execution>
                            <execution>
                                <id>default-testResources</id>
                                <phase>none</phase>
                            </execution>
                            <execution>
                                <id>prepare-dockerfile</id>
                                <phase>none</phase>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </pluginManagement>
        </build>
    </profile>
</profiles>

单独包装
maven编译器插件
默认编译
没有一个
默认测试编译
没有一个
maven surefire插件
默认测试
没有一个
maven资源插件
默认资源
没有一个
默认测试资源
没有一个
准备dockerfile
没有一个

所有插件中都有对元素的功能请求。这将涉及所有插件必须支持此功能。我想的更多的是
dev
,你能详细说明一下你到底想要实现什么吗?什么包装?测试等?还是怎样也许你可以提供你的pom文件的摘录?非常详细:我想设置它,这样当我的maven build在启用“风险”配置文件的情况下运行时,我希望pmd、checkstyle、findbugs、surefire和failsafe插件不运行。请添加以下步骤:1)要使用插件运行项目,只需像往常一样构建;2) 要在没有插件的情况下运行项目,请执行
mvncleanpackage-P生产
。注意:
dev
配置文件是不必要的,如果它不包含任何特别的内容。
-P!profileName
应足以排除该配置文件。@carlspring您能帮助我了解为什么会出现此错误吗<代码>$mvn-P!生产清洁-bash:!制作:未找到事件你说得对,我的错!我几乎可以发誓我以前就这样做过。:)您可以使用以下命令禁用历史替换:
set+H
是否可以创建插件定义并从概要文件中“调用”它,以便我们可以重用一些xml定义?回答得很好。这甚至允许从生命周期中删除标准插件,例如
maven编译器插件
。值得一提的是:1)使用none,您不能禁用整个插件,但可以禁用具体的插件;2)可以使用${enablePhase}之类的变量,并在不同的配置文件中设置或不设置此变量。通过这种方式,可以有条件地运行某个执行。应该提到的是,his仅与生命周期的默认插件一起工作,因为它们的绑定在中声明,并且它们的
default-…
id由Maven动态创建/不能被
//
覆盖,因为它们的工作方式相反:(专用)
覆盖(常规)
mvn clean package
mvn clean package -P no-sass
[INFO] --- maven-resources-plugin:2.7:copy-resources (prepare-dockerfile) @ tilbud ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
...
[INFO]
[INFO] --- maven-resources-plugin:2.7:resources (default-resources) @ tilbud ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
....
[INFO]
[INFO] --- maven-compiler-plugin:3.5.1:compile (default-compile) @ tilbud ---
...
[INFO]
[INFO] --- maven-resources-plugin:2.7:testResources (default-testResources) @ tilbud ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
...
[INFO]
[INFO] --- maven-compiler-plugin:3.5.1:testCompile (default-testCompile) @ tilbud ---
....
<profiles>
    <profile>
        <id>packageOnly</id>
        <build>
            <pluginManagement>
                <plugins>
                    <plugin>
                        <artifactId>maven-compiler-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>default-compile</id>
                                <phase>none</phase>
                            </execution>
                            <execution>
                                <id>default-testCompile</id>
                                <phase>none</phase>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <artifactId>maven-surefire-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>default-test</id>
                                <phase>none</phase>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <artifactId>maven-resources-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>default-resources</id>
                                <phase>none</phase>
                            </execution>
                            <execution>
                                <id>default-testResources</id>
                                <phase>none</phase>
                            </execution>
                            <execution>
                                <id>prepare-dockerfile</id>
                                <phase>none</phase>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </pluginManagement>
        </build>
    </profile>
</profiles>