Apache Maven是一个用于项目管理和构建自动化的工具。此标记用于与Maven版本3.x相关的问题。对于非特定版本的问题,请使用[maven]标记。
无法启动jboss.deployment.unit。“war”.POST_MODULE
我按照本教程使用 NetBeans 中数据库的 RESTful Web 服务创建了一个 Maven 项目: http://jaxenter.com/from-database-to-restful-web-service-to-html5-in-10-minutes-105524...
我将从我的 pom.xml 开始: 我将从我的 pom.xml 开始: <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>HPK</groupId> <artifactId>WRB</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>WRB</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <dependency> <groupId>org.antlr</groupId> <artifactId>antlr4</artifactId> <version>4.5.3</version> </dependency> </dependencies> <build> <plugins> <plugin> <artifactId>maven-clean-plugin</artifactId> <version>3.0.0</version> <executions> <execution> <id>auto-clean</id> <phase>initialize</phase> <goals> <goal>clean</goal> </goals> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.7.0</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> <plugin> <groupId>org.antlr</groupId> <artifactId>antlr4-maven-plugin</artifactId> <version>4.3</version> <executions> <execution> <configuration> <arguments> <argument>-visitor</argument> <argument>-package</argument> <argument>wrb.grammar</argument> </arguments> </configuration> <id>antlr</id> <goals> <goal>antlr4</goal> </goals> </execution> </executions> </plugin> </plugins> <pluginManagement> <plugins> <!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself. --> <plugin> <groupId>org.eclipse.m2e</groupId> <artifactId>lifecycle-mapping</artifactId> <version>1.0.0</version> <configuration> <lifecycleMappingMetadata> <pluginExecutions> <pluginExecution> <pluginExecutionFilter> <groupId> org.apache.maven.plugins </groupId> <artifactId> maven-clean-plugin </artifactId> <versionRange> [3.0.0,) </versionRange> <goals> <goal>clean</goal> </goals> </pluginExecutionFilter> <action> <ignore></ignore> </action> </pluginExecution> </pluginExecutions> </lifecycleMappingMetadata> </configuration> </plugin> </plugins> </pluginManagement> </build> 当我在这个项目上运行 maven install 时,maven 应该从 wrb.grammar 包中的 antlr4 插件生成源代码,但事实并非如此。它做了所有事情,但是将源代码放入这些目录中,它只是将它们放入所谓的“默认包”中,这只是 antlr/generated-sources 的根。 如果我通过右键单击语法并在运行方式下选择它来使用 Antlr4IDE 插件,则会在正确的目录中生成源代码。 与我一起参与这个小项目的另一个人使用 maven-install 没有任何问题。除了我们的操作系统和eclipse版本之外,一切都是一样的。 我在 MacOS 上使用 Eclipse Oxygen。 我做错了什么,maven-plugin 没有生成我想要的目录? 我检查了antlr4 4.3版本的来源。 -package参数仅由代码生成器模板使用,但不在实际工具源代码中的任何位置使用(请参阅genPackage的Github搜索结果)。所以它不会影响输出文件的位置。 相反,每个输出文件的位置是根据相应输入文件的位置确定的(请参阅源中的here和here)。这符合 maven 插件文档中的解释: 如果您的语法打算成为名为 org.foo.bar 的包的一部分,那么您可以将其放置在目录 src/main/antlr4/org/foo/bar 中。然后,该插件将在输出目录 target/ generated-sources/antlr4/org/foo/bar 中生成 .java 和 .tokens 文件。编译 Java 文件时,它们将位于 Javac 编译器的正确位置,无需任何特殊配置。生成的java文件由插件自动提交编译。 此外,使用 antlr4-maven-plugin 时,无需指定 -package 选项。由于插件从输入文件路径中派生出 -package 参数的值,并自动将其添加到 antlr 调用中(请参阅此处的源代码)。这可能也是为什么 -pacakge 不能直接用作 Maven 插件中的 配置参数 的原因。 解决方案 为了将生成的文件放置在与包名称匹配的目录结构中,您需要对输入文件使用相同的结构。 本质上,您需要做的就是将语法文件放入 src/main/antlr4/wrb/grammar 中,从配置中删除 -package 参数,一切都会按预期工作。 顺便说一句:代替写作 <arguments> <argument>-visitor</argument> </arguments> 你可以简单地写 <visitor>true</visitor> 因为这个参数可以被antlr4-maven-plugin直接理解。 正如 @ChristophBöhme 在问题评论中所写,您必须将语法文件放置在与您希望生成的源代码显示完全相同的包中。它实际上与您的 pom.xml 文件无关。 ANTLR 尝试通过查看文件夹树来找出包名称,因此,如果您有一个名为 com 的文件夹,其中包含一个名为 example 的文件夹,其中又包含一个名为 hello_world 的文件夹,那么这将形成包 com.example.hello_world 它将在输出文件夹中生成完全相同的文件夹结构和包。 因此,如果你的包名为 com.example.hello_world,那么你的目录结构必须如下所示,假设你的语法文件位于 src/main/antlr4: hello_world (root project folder) | --src | -- main | -- antlr4 (up to here, these are "verbatim" folders) | -- com.example.hello_world (this is a package, to create it you can make a "source folder" in Eclipse) | -- YourGrammar.g4 | -- target (autogenerated) | -- generated_sources | -- antlr4 | -- com.example.hello_world | -- ...All ANTLR-generated files...
这个问题是定义模块列表的扩展,应该在Maven多项目构建中构建。 运行 mvn install -pl“project1、project2 等”时-am -Pmy-profile,maven 会
Mvn:打包 Spring Boot - 不包括 starter-* jar
maven package 命令在生成的 jar 中不包含 spring-boot-stater-*.jar 新鲜的 Spring 启动项目 - Spring Initializr 下载我与任何 starter-* 依赖项一起使用的项目, mvn 清洁 p...
当我通过 gitlab 部署时出现此错误 [错误] 无法在项目 project-1.0.0 上执行目标 org.apache.maven.plugins:maven-compiler-plugin:3.10.0:compile (default-compile):编译失败:
maven 的“.wagon.http.ssl...”命令是否已弃用?
为了禁用我的maven项目的SSL证书有效性检查,我尝试了以下命令: mvn clean install -Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true -Dmaven.
为什么Maven每次都下载maven-metadata.xml?
下面是当我尝试使用 Maven 构建 Web 应用程序时,当我的互联网连接不稳定时,我通常会遇到的错误。 我的问题是,为什么maven每次都要下载...
无法打开 Hibernate 会话进行事务;嵌套异常是 org.hibernate.exception.JDBCConnectionException:无法打开连接
我是 Spring-MVC 和 Hibernate 的新手。尝试使用 Spring-MVC(4.0.3) 、 Hibernate(4.3.5) 并使用 MySQL 作为后端创建一个测试 Web 应用程序。 连接数据库没有问题,因为我...
执行maven命令后出现“您指定的目标需要执行一个项目但该目录中没有POM”错误
我在 C:\Users\AArmijos\Desktop\Factura Electronica\MIy 中有一个 pom.xml
GitHub 作为 Maven 存储库 |创建 blob 时出错:未找到 (404)
以下是我使用 GitHub 作为 Maven 存储库已完成的步骤 创建了一个新的公共存储库:https://github.com/keshavram-roomie/library 去了 https://start.spring.io 和
如何强制 Maven 使用本地存储库而不是前往远程存储库来检索工件?
我在 Mac Yosemite 上使用 Maven 3.3.3 和 Java 8。我有一个多模块项目。 第一个模块 我的模块 我在 Mac Yosemite 上使用 Maven 3.3.3 和 Java 8。我有一个多模块项目。 <modules> <module>first-module</module> <module>my-module</module> … </modules> 当我使用“mvn clean install”构建我的一个子模块(例如上面的“my-module”)时,构建会尝试从我在 ~/.bashrc 中定义的远程存储库下载子模块工件。 m2/settings.xml 文件。输出如下 [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building my-module 87.0.0-SNAPSHOT [INFO] ------------------------------------------------------------------------ Downloading: https://my.remoterepository.com/nexus/content/repositories/snapshots/org/mainco/subco/first-module/87.0.0-SNAPSHOT/maven-metadata.xml Downloading: http://download.java.net/maven/2/org/mainco/subco/first-module/87.0.0-SNAPSHOT/maven-metadata.xml Downloaded: https://my.remoterepository.com/nexus/content/repositories/snapshots/org/mainco/subco/first-module/87.0.0-SNAPSHOT/maven-metadata.xml (788 B at 0.9 KB/sec) Downloading: https://my.remoterepository.com/nexus/content/repositories/snapshots/org/mainco/subco/first-module/87.0.0-SNAPSHOT/first-module-87.0.0-20151104.200545-4.pom 如何强制 Maven 在尝试从远程存储库下载之前先检查我的本地 ~/.m2/repository?下面是我在 ~/.m2/settings.xml 文件中定义的远程存储库...... <profile> <id>releases</id> <activation> <property> <name>!releases.off</name> </property> </activation> <repositories> <repository> <id>releases</id> <url>https://my.remoterepository.com/nexus/content/repositories/releases/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories> </profile> <profile> <id>snapshots</id> <activation> <property> <name>!snapshots.off</name> </property> </activation> <repositories> <repository> <id>snapshots</id> <url>https://my.remoterepository.com/nexus/content/repositories/snapshots/</url> <releases> <enabled>false</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories> </profile> 编辑:响应说当工件不存在时会进行下载,下面是终端输出,其中我证明该文件在我的存储库中,但 Maven 无论如何都在尝试下载它...... Daves-MacBook-Pro-2:my-module davea$ ls -al ~/.m2/repository/org/mainco/subco/first-module/87.0.0-SNAPSHOT/first-module-87.0.0-SNAPSHOT.jar -rw-r--r-- 1 davea staff 10171 Nov 5 10:22 /Users/davea/.m2/repository/org/mainco/subco/first-module/87.0.0-SNAPSHOT/first-module-87.0.0-SNAPSHOT.jar Daves-MacBook-Pro-2:my-module davea$ mvn clean install [INFO] Scanning for projects... [WARNING] [WARNING] Some problems were encountered while building the effective model for org.mainco.subco:my-module:jar:87.0.0-SNAPSHOT [WARNING] 'build.plugins.plugin.(groupId:artifactId)' must be unique but found duplicate declaration of plugin org.apache.maven.plugins:maven-antrun-plugin @ org.mainco.subco:my-module:[unknown-version], /Users/davea/Documents/sb_workspace/my-module/pom.xml, line 678, column 12 [WARNING] [WARNING] It is highly recommended to fix these problems because they threaten the stability of your build. [WARNING] [WARNING] For this reason, future Maven versions might no longer support building such malformed projects. [WARNING] [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building my-module 87.0.0-SNAPSHOT [INFO] ------------------------------------------------------------------------ Downloading: https://my.remoterepository.com/nexus/content/repositories/snapshots/org/mainco/subco/first-module/87.0.0-SNAPSHOT/maven-metadata.xml Downloading: http://download.java.net/maven/2/org/mainco/subco/first-module/87.0.0-SNAPSHOT/maven-metadata.xml Downloaded: https://my.remoterepository.com/nexus/content/repositories/snapshots/org/mainco/subco/first-module/87.0.0-SNAPSHOT/maven-metadata.xml (788 B at 0.8 KB/sec) Downloading: https://my.remoterepository.com/nexus/content/repositories/snapshots/org/mainco/subco/first-module/87.0.0-SNAPSHOT/first-module-87.0.0-20151106.043202-8.pom Downloaded: https://my.remoterepository.com/nexus/content/repositories/snapshots/org/mainco/subco/first-module/87.0.0-SNAPSHOT/first- module-87.0.0-20151106.043202-8.pom (3 KB at 21.9 KB/sec) Downloading: http://download.java.net/maven/2/org/mainco/subco/subco/87.0.0-SNAPSHOT/maven-metadata.xml Downloading: https://my.remoterepository.com/nexus/content/repositories/snapshots/org/mainco/subco/subco/87.0.0-SNAPSHOT/maven-metadata.xml 依赖项有快照版本。对于快照,Maven 将检查本地存储库,如果本地存储库中找到的工件太旧,它将尝试在远程存储库中查找更新的工件。这可能就是您所看到的。 请注意,此行为由存储库配置中的 updatePolicy 指令控制(快照存储库默认为 daily)。 使用mvn --help,您可以看到选项列表。 有一个类似-nsu,--no-snapshot-updates Suppress SNAPSHOT updates的选项 因此使用命令mvn install -nsu可以强制使用本地存储库进行编译。 要真正强制maven仅使用本地存储库,您可以使用mvn <goals> -o运行。 -o 告诉 maven 让你“离线”工作,并且它将远离网络。 请按照以下步骤操作: 确保删除本地 jar 文件夹中的所有内容,除了要保留的 jar 之外。 例如 .repositories、.pom、.sha1、.lastUpdated 等文件。 执行mvn clean install -o命令 这将有助于使用本地存储库 jar 文件,而不是连接到任何存储库。 就我而言,我有一个像你一样的多模块项目。我必须更改我的项目所依赖的外部库之一的组 ID,如下所示。 来自: <dependencyManagement> <dependency> <groupId>org.thirdparty</groupId> <artifactId>calculation-api</artifactId> <version>2.0</version> <type>jar</type> <scope>provided</scope> </dependency> <dependencyManagement> 致: <dependencyManagement> <dependency> <groupId>org.thirdparty.module</groupId> <artifactId>calculation-api</artifactId> <version>2.0</version> <type>jar</type> <scope>provided</scope> </dependency> <dependencyManagement> 注意部分。事实证明,我忘记修改在其 pom 文件中定义此依赖项的子模块的相应部分。 这让我非常抓狂,因为该模块在本地可用。 Maven 总是首先检查您的本地存储库,但是,您的依赖项需要安装在您的存储库中,以便 Maven 找到它。 首先在依赖模块中运行 mvn install,然后构建依赖模块。 即使考虑了上述所有答案,您仍然可能会遇到问题,从而导致您的 Maven 离线构建出错。特别是,您可能会遇到以下警告: [WARNING] The POM for org.apache.maven.plugins:maven-resources-plugin:jar:2.6 is missing, no dependency information available 警告之后将立即出现进一步的错误,maven 将终止。 对于我们来说,使用按照上述提示创建的 Maven 离线缓存进行离线构建的最安全方法是使用以下 Maven 离线参数: mvn -o -llr -Dmaven.repo.local=<path_to_your_offline_cache> ... 特别是,选项 -llr 可以防止您必须按照答案 #4 中的建议调整本地缓存。 另请注意,settings.xml 中的参数 指向本地 Maven 存储库的正确文件夹。 -o 选项对我不起作用,因为根据我得到的错误,该工件仍在开发中,尚未上传,maven(3.5.x)仍然尝试从远程存储库下载它,因为这是第一次. 但是这为我解决了这个问题:https://maven.apache.org/general.html#importing-jars 手动安装后,也无需使用离线选项。 更新 我刚刚重建了依赖关系,我必须重新导入它:常规的 mvn clean install 对我来说还不够 我也遇到了完全相同的问题。运行 mvn clean install 而不是 mvn clean compile 解决了这个问题。 仅在使用 multi-maven-project 时才会出现差异,因为项目依赖项是通过使用 install 上传到本地存储库的。 我也遇到了同样的问题。对我来说,这是 pom.xml 中缺少的 SNAPSHOT 文本。看起来,如果我们想强制maven从本地构建,我们需要提供-SNAPSHOT: <dependency> <groupId>com.ABC</groupId> <artifactId>QRS</artifactId> <version>1.2.65-SNAPSHOT</version> </dependency> 使用 只是给我 2 美分。对我来说,只需要在 ~/.m2/repository 目录中找到 jar 并使用它的版本。所以,使用后 cd local-dependency/ mvn install local-dependency罐子将位于.m2/repository/com/your-organization/local-dependency/中 ~$ tree ~/.m2/repository/com/your-organization/local-dependency/ /home/felipe/.m2/repository/com/your-organization/local-dependency/ ├── 0.1-SNAPSHOT │ ├── maven-metadata-local.xml │ ├── _remote.repositories │ ├── local-dependency-0.1-SNAPSHOT.jar │ ├── local-dependency-0.1-SNAPSHOT.pom │ └── resolver-status.properties └── maven-metadata-local.xml 然后将其用作本地依赖项 <dependency> <groupId>com.your-organization</groupId> <artifactId>local-dependency</artifactId> <version>0.1-SNAPSHOT</version> </dependency>
为什么maven在构建这个child_project时要搜索parent_project:pom:${revision}?
背景 目录布局 | |`parent_project/pom.xml | |`child_project/pom.xml 父pom 背景 目录布局 | |`parent_project/pom.xml | |`child_project/pom.xml 父pom <?xml version="1.0" encoding="UTF-8"?> <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>org.example</groupId> <artifactId>parent_project</artifactId> <version>${revision}</version> <packaging>pom</packaging> <properties> <maven.compiler.source>8</maven.compiler.source> <maven.compiler.target>8</maven.compiler.target> </properties> </project> 儿童绒球 <?xml version="1.0" encoding="UTF-8"?> <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> <parent> <artifactId>parent_project</artifactId> <groupId>org.example</groupId> <version>1.0-SNAPSHOT</version> </parent> <artifactId>child_project</artifactId> <version>${revision}</version> <properties> <maven.compiler.source>8</maven.compiler.source> <maven.compiler.target>8</maven.compiler.target> </properties> </project> 产生问题的步骤 构建父级 mvn clean install -Drevision=1.0-SNAPSHOT -U -f pom.xml 打造孩子 mvn clean install -Drevision=1.0-SNAPSHOT -U -f pom.xml 出现错误 Could not find artifact org.example:parent_project:pom:${revision} in remote-repo (url) 问题 我在子进程的父块中将父版本指定为 1.0-SNAPSHOT,那么为什么 maven 会尝试查找 org.example:parent_project:pom:${revision}? 当maven在构建child_project时开始查找parent_project:pom:${revision}时,${revision}目录被添加到.m2/repository/.../parent_project/ 答案重新设计,请查看末尾的链接以获取文档 multi module project 和 ci friendly links 以及 revision 参数。 示例(构建父级也构建子级,构建子级仅构建该子级): 目录布局 ...\parent\pom.xml ...\括号
Maven:警告无法使用环境中的“javac”自动检测“javac”路径
运行 Maven 时,我得到以下输出: [警告] 无法使用环境中的“javac”自动检测“javac”路径。 我该如何解决这个问题?
我有一个带有以下 application.properties 设置的 Spring Boot 应用程序。 #... spring.datasource.url=${JDBC_DATABASE_URL} 当我使用像 IntelliJ 这样的 IDE 时,我可以设置环境变量,它
我在我的项目中使用Maven 3。它已经被搁置了一段时间,但我们最近又开始研究它。 当我尝试构建它时,出现以下错误: [错误] 失败...
如何在mavenized多模块项目中从CheckStyle分析中排除包?
我有一个包含多个模块的 Maven 项目,包括 org.eclipse.cdt.core。由于某种原因,客户也希望构建 org.eclipse.cdt.core。 我想生成一个聚合的 Checkstyle ...
Maven 似乎能够指示一系列版本,例如 [1.2.3,) 当没有一致的版本时,maven 如何确定什么是新版本或旧版本
除了tomcat7-maven-plugin之外,我没有找到任何tomcat-maven-plugin。 我可以与 apache-tomcat-9.0.0.M15 一起使用吗?
当我使用“mvn clean install”目标运行我的sprint启动项目时,我收到了以下日志,请帮助解决这个问题。 [信息]最终内存:25M/87M 18:26:48 [信息] ----------------------...
Maven 发布插件问题 - 无法执行目标 org.apache.maven.plugins:maven-release-plugin:2.3.2:prepare
挣扎于maven:发布这个项目。看起来像是版本不兼容的问题,但我不知道如何纠正这个问题。我使用的是 Maven 版本 3.1.1。 这是我的 pom.xml (示例) <...