[英]Maven enforcer plugin and missing dependencies
Here is a minimal project: 这是一个最小的项目:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.test</groupId>
<artifactId>enforcer</artifactId>
<version>1.0.0</version>
<packaging>jar</packaging>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<version>1.3.1</version>
<executions>
<execution>
<id>enforce-env</id>
<goals>
<goal>enforce</goal>
</goals>
</execution>
</executions>
<configuration>
<rules>
<requireProperty>
<property>custom</property>
<message>You must set custom property.</message>
</requireProperty>
</rules>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>com.test</groupId>
<artifactId>enforcer-dep</artifactId>
<version>1.0.0</version>
<classifier>${custom}</classifier>
</dependency>
</dependencies>
</project>
When running: 运行时:
mvn -Dcustom=some-value validate
Validation goes OK. 验证成功。
When running: 运行时:
mvn enforcer:enforce
or any phase from validate
to process-resources
或从
validate
到process-resources
任何阶段
mvn validate
mvn initialize
mvn generate-sources
mvn process-sources
mvn generate-resources
mvn process-resources
I get expected fail with message: 我得到失败的消息:
[...]
[INFO] --- maven-enforcer-plugin:1.3.1:enforce (enforce-env) @ enforcer ---
[WARNING] Rule 0: org.apache.maven.plugins.enforcer.RequireProperty failed with message:
You must set custom property.
[...]
But when I run any other (later) phase from compile
up to deploy
eg: 但是,当我运行从
compile
到deploy
任何其他(后期)阶段时,例如:
mvn install
I get the error about missing dependency but there is no fail caused by enforcer plugin: 我收到有关缺少依赖项的错误,但没有因执行程序插件引起的失败:
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building enforcer 1.0.0
[INFO] ------------------------------------------------------------------------
[WARNING] The POM for com.test:enforcer-dep:jar:${custom}:1.0.0 is missing, no dependency information available
Downloading: http://repo.maven.apache.org/maven2/com/test/enforcer-dep/1.0.0/enforcer-dep-1.0.0-${custom}.jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.983s
[INFO] Finished at: Fri Nov 22 09:22:24 CET 2013
[INFO] Final Memory: 7M/152M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal on project enforcer: Could not resolve dependencies for project com.test:enforcer:jar:1.0
.0: Could not transfer artifact com.test:enforcer-dep:jar:${custom}:1.0.0 from/to central (http://repo.maven.apache.org/
maven2): Illegal character in path at index 84: http://repo.maven.apache.org/maven2/com/test/enforcer-dep/1.0.0/enforcer
-dep-1.0.0-${custom}.jar -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/DependencyResolutionException
It looks for me like enforcer plugin is not executed at all, or dependencies are checked first before project can be build when running compile
and later phases. 在我看来,强制执行器插件根本不执行,或者在运行
compile
和后续阶段时,首先检查依赖项,然后才能构建项目。
But why dependencies are not checked when running up to process-resources
? 但是,为什么在运行
process-resources
时不检查依赖项?
Obviously you seemed to have changed the settings of the maven installation which went wrong based on the error message: 显然,您似乎已根据错误消息更改了Maven安装的设置,该设置出现错误:
[WARNING] Some problems were encountered while building the effective settings
[WARNING] expected START_TAG or END_TAG not TEXT (position: TEXT seen ...ever maven must make a connection to a remote s
erver.\n |-->\n <s... @111:5) @ C:\programs\Maven\3\bin\..\conf\settings.xml
This means first clean up the conf/settings.xml file. 这意味着首先清理conf / settings.xml文件。 Best is to use the default file which came via the installation.
最好是使用安装过程中提供的默认文件。 If you need to make modification do this in the users settings.xml
$HOME/.m2/settings.xml
or on Windows C:/Users/UserName/.m2/settings.xml
如果需要进行修改,请在用户settings.xml
$HOME/.m2/settings.xml
或Windows C:/Users/UserName/.m2/settings.xml
Apart from that i don't know what you like to achieve by using something like this: 除此之外,我不知道您想通过以下方式实现什么:
[WARNING] The POM for com.test:enforcer-dep:jar:${custom}:1.0.0 is missing, no dependency information available
Downloading: http://repo.maven.apache.org/maven2/com/test/enforcer-dep/1.0.0/enforcer-dep-1.0.0-${custom}.jar
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.