常见技术问题
- 如何防止“[警告]使用平台编码(实际上是 Cp1252)复制过滤的资源,即构建依赖于平台!”
- 如何防止在 WEB-INF/lib 中包含 JAR?我需要一个“仅编译”范围!
- 如何列出可用插件?
- 如何确定我正在使用的插件版本?
- 如何在 Maven 构建中使用 Ant 任务?
- 如何在 Ant 构建中使用 Maven 功能?
- 如何设置 Maven,以便它可以使用我选择的目标和源 JVM 进行编译?
- 是否可以创建自己的目录结构?
- 源代码在哪里?我似乎在 Maven 网站上的任何地方都找不到链接。
- Maven 似乎无法下载依赖项。我的安装正确吗?
- 我有一个要放入本地存储库的 jar。怎么复制进去?
- 如何取消订阅 Maven 邮件列表?
- 如何跳过测试?
- 如何运行单个单元测试?
- 处理站点中的特殊字符
- Maven 编译我的测试类但不运行它们?
- Maven SNAPSHOT 工件在哪里?
- Maven XSD 模式在哪里?
- Maven 不工作,我该如何获得帮助?
- 如何产生执行调试输出或错误消息?
- 什么是魔力?
- 如何查找公共 Maven 存储库的依赖项?
- 为什么我的 Javadoc JAR 在发布期间构建了两次?
- 如何防止“[警告]使用平台编码(实际上是 Cp1252)复制过滤的资源,即构建依赖于平台!”
-
处理纯文本文件但尚未配置为使用特定文件编码的插件会发出此警告或类似警告。因此,消除警告只是找出哪个插件发出它以及如何为其配置文件编码的问题。这就像将以下属性添加到您的 POM(或其父 POM 之一)一样简单:
<project> ... <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> ... </project>
- 如何防止在 WEB-INF/lib 中包含 JAR?我需要一个“仅编译”范围!
-
您应该为此使用的范围是
provided
. 这向 Maven 表明,依赖项将在运行时由其容器或 JDK 提供,例如。具有此范围的依赖项不会被传递,也不会捆绑在诸如 WAR 之类的包中,或包含在运行时类路径中。
- 如何列出可用插件?
-
“可用插件”页面列出了它们并提供了其他信息。见https://maven.apache.org/plugins
- 如何确定我正在使用的插件版本?
-
您可以使用Maven Help Plugin的
describe
目标。例如,要找出安装插件的版本:mvn -Dplugin=install help:describe
请注意,您必须将插件前缀作为插件的参数,而不是工件 ID。
- 如何在 Maven 构建中使用 Ant 任务?
-
目前有2个替代方案:
- 要在用 Java、Beanshell 或其他类似 Java 的脚本语言编写的插件中使用,您可以使用 Ant 文档中给出的说明构建 Ant 任务
- 如果您有非常少量的特定于您的项目的 Ant 脚本,您可以使用 AntRun 插件。
- 如何在 Ant 构建中使用 Maven 功能?
-
Maven Ant 任务允许在 Ant 构建中 使用Maven 的许多功能,例如依赖关系管理和存储库部署。
- 如何设置 Maven,以便它可以使用我选择的目标和源 JVM 进行编译?
-
您必须在 pom.xml 中配置源和目标参数。例如,要将源 JVM 和目标 JVM 设置为 7,您应该在 pom 中包含:
<project> ... <properties> <maven.compiler.source>1.7</maven.compiler.source> <maven.compiler.target>1.7</maven.compiler.target> </properties> ... </project>
或者,如果父 pom 覆盖了编译器插件默认值并且您无法修复它,则必须明确强制编译器插件配置中的值:
<project> ... <build> ... <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.3</version> <configuration> <source>1.7</source> <target>1.7</target> </configuration> </plugin> </plugins> ... </build> ... </project>
- 是否可以创建自己的目录结构?
-
绝对没错!
通过配置
<sourceDirectory>
,<resources>
和该<build>
部分的其他元素。此外,如果您没有为其文件/目录使用插件默认值,则可能需要更改插件配置。
- 源代码在哪里?我似乎在 Maven 网站上的任何地方都找不到链接。
-
源代码可以在我们的 Subversion 和 Git 存储库中找到。
有关更多信息,请参阅构建 Maven。
- Maven 似乎无法下载依赖项。我的安装正确吗?
-
您很可能需要配置 Maven 以使用代理。有关如何为 Maven 配置代理的信息 ,请参阅 配置代理的信息。
- 我有一个要放入本地存储库的 jar。怎么复制进去?
-
如果您了解 Maven 存储库的布局,则可以将 jar 直接复制到它打算去的地方。Maven 会在下次运行时找到这个文件。
如果您对 Maven 存储库的布局没有信心,那么您可以修改以下命令以加载到您的 jar 文件中,全部在一行中。
mvn install:install-file -Dfile=<path-to-file> -DgroupId=<group-id> -DartifactId=<artifact-id> -Dversion=<version> -Dpackaging=<packaging> -DgeneratePom=true Where: <path-to-file> the path to the file to load <group-id> the group that the file should be registered under <artifact-id> the artifact name for the file <version> the version of the file <packaging> the packaging of the file e.g. jar
这应该将文件加载到 Maven 存储库中,并根据需要对其进行重命名。
- 如何取消订阅 Maven 邮件列表?
-
要取消订阅 Maven 邮件列表,您只需发送消息到
[mailing-list]-unsubscribe@maven.apache.org
因此,如果您已订阅,
users@maven.apache.org
那么您将发送一条消息以users-unsubscribe@maven.apache.org
退出列表。人们在订阅一个地址并尝试取消订阅另一个地址时往往会遇到问题。因此,请确保您在取消订阅时使用的地址与您在寻求帮助之前曾经订阅过的地址相同。如果您发现您仍然无法从列表中删除,请发送消息至
[mailing-list]-help@maven.apache.org
。这些说明还附加到在 Maven 邮件列表上发送的每条消息中...... - 如何跳过测试?
-
添加参数
-Dmaven.test.skip=true
或-DskipTests=true
在命令行中,取决于您是要跳过测试编译和执行还是只执行。有关更多详细信息,请参阅Surefire 插件文档 中的示例 跳过测试。 - 如何运行单个单元测试?
-Dtest=MyTest
在命令行中 使用参数。注意:不要指定整个包(org.apache.xyMyTest)- 处理站点中的特殊字符
-
配置您的 ide 以使用正确的编码。使用 Eclipse,添加
-Dfile.encoding=ISO-8859-1
eclipse.ini 文件在你的 pom 中配置报告输出编码
或者,如果您无法更改的父 pom 中的默认编码被覆盖,请显式配置站点插件:<project> ... <properties> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> </properties> ... </project>
<project> ... <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-site-plugin</artifactId> <version>3.6</version> <configuration> <outputEncoding>UTF-8</outputEncoding> </configuration> </plugin> ... <project>
配置 mvn 使用的文件编码。将编码添加到 MAVEN_OPTS(与 ide 相同)。这可以通过
MAVEN_OPTS="-Dfile.encoding=ISO-8859-1"
添加$HOME/.profile
- Maven 编译我的测试类但不运行它们?
-
测试由surefire 插件运行。可以将surefire 插件配置为运行某些测试类,您可能无意中通过为${test} 指定一个值来这样做。检查您的 settings.xml 和 pom.xml 是否有一个名为“test”的属性,如下所示:
<project> ... <properties> <property> <name>test</name> <value>some-value</value> </property> </properties> ... </project>
要么
<project> ... <properties> <test>some-value</test> </properties> ... </project>
- Maven SNAPSHOT 工件在哪里?
-
如果您尝试构建 Maven 或插件的开发版本,您可能需要访问 Maven 快照存储库。
您需要使用 插件快照存储库指南更新您的 settings.xml 文件
- Maven XSD 模式在哪里?
-
Maven XSD 位于此处,Maven 设置 XSD 位于此处。
您最喜欢的 IDE 可能支持用于 pom.xml 和 settings.xml 编辑的 XSD 模式。您需要指定以下内容:
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd"> ... </project>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 https://maven.apache.org/xsd/settings-1.0.0.xsd"> ... </settings>
- Maven 不工作,我该如何获得帮助?
-
我们在 获取帮助页面上编制了可用资源列表
- 如何产生执行调试输出或错误消息?
-
您可以使用-X参数或-e参数 调用 Maven 。有关更多信息,请运行:
mvn --help
- 什么是魔力?
-
mojo 是M aven plain O ld J ava O对象。每个 mojo 都是 Maven 中的一个可执行 目标,一个 Maven 插件是一个或多个相关 mojo 的分发。
- 如何查找公共 Maven 存储库的依赖项?
-
您可以使用以下搜索引擎:
- 为什么我的 Javadoc JAR 在发布期间构建了两次?
-
在 MNG-5940 中,Maven Javadoc 插件的发布配置文件目标已更改为
jar-no-fork
. 修改您的配置以避免重复的 JAR 上传。