Apache Maven是一个用于项目管理和构建自动化的工具。此标记用于与Maven版本3.x相关的问题。对于非特定版本的问题,请使用[maven]标记。
为什么以及如何避免Maven在mvn包上替换jsp中的${id}
当我“mvn package”我的web应用程序时,jsp中所有出现的${id}都被替换为 com.domainname.projectname:project-warname:war:0.0.1-SNAPSHOT Maven 版本 3.0.5 pom.xml: <
在哪里可以找到 spring boot 3.1.3 属性名称来覆盖reactor-netty-http版本
在哪里可以找到正确的 spring boot (v3.1.3) 属性名称 - 我可以在 pom.xml 中使用它来覆盖默认的reactor-netty-http版本(在“spring-boot-starter-reactor-netty”中) ”)...
Java、mvn工具,如何使用mvn卸载包?有一些插件、工具、shell脚本和命令方法吗?
我正在运行 Maven 3.8.9,这就是我在 pom.xml 中的内容 中央 Maven 存储库切换...
我正在尝试在 Maven 在 META-INF/maven/${groupId}/${artifactId} 位置生成的 pom.properties 文件中添加自定义值 org.apache.maven.plugins 我正在尝试在 Maven 在 META-INF/maven/${groupId}/${artifactId} 位置生成的 pom.properties 文件中添加自定义值 <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>2.4</version> <configuration> <archive> <manifestEntries> <build>${BUILD_TAG}</build> </manifestEntries> <addMavenDescriptor>true</addMavenDescriptor> <pomPropertiesFile>${project.build.directory}\interface.properties</pomPropertiesFile> </archive> </configuration> </plugin> interface.properties文件的内容是 # Build Properties buildId=746 使用文档我已将pomPropertiesFile元素指向外部属性,但运行后生成的pom.properties文件仍然具有默认内容mvn install pomPropertiesFile元素的正确用法是什么? 编辑 我认为问题出在 org.apache.maven.archiver.PomPropertiesUtil 上。如果您查看 source 中的方法 sameContents,如果外部文件中的属性与默认值相同,则返回 true;如果不同,则返回 false。如果 sameContents 的结果为 false,则忽略外部文件的内容。 果然,这已经被记录为错误 我认为你需要在 src/main/resources/META-INF/${groupId}/${artifactId}/interface.properties 下放置一个文件,并让 maven 执行过滤工作(配置过滤)。该文件将自动复制到 target/META-INF/maven/${groupId}/${artifactId}/ 位置。 参见 https://issues.apache.org/jira/browse/MNG-4998 Maven 3 在读取 pom.xml 时将立即解析属性占位符以获取此时可用的所有属性值。稍后修改这些属性不会影响 pom.xml 中已解析的值。 但是,如果属性值不可用(没有默认值),则占位符将不会被该值替换,并且稍后仍可以将其作为占位符进行处理。例如,如果插件将在构建过程中生成某些属性,或者如果插件在某个构建步骤中读取并处理占位符。
在构建 war 文件时,我将一组 jar 从某个位置复制到 war 内的文件夹中。虽然文件确实被复制,但我认为它们被损坏了,因为 t 的相同类文件...
我正在尝试将 Apache POI 导入 Atlassian Jira 插件以读取 excel 文件。 一开始,我开始只是添加 org.apache.poi 我正在尝试将 Apache POI 导入 Atlassian Jira 插件以读取 excel 文件。 一开始,我只是添加了 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>${poi.version}</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml-schemas</artifactId> <version>${poi.version}</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>${poi.version}</version> </dependency> poi.版本是3.14 然后当我启动插件时它给出了 Unresolved constraint in bundle com.tezExtensions [165]: Unable to resolve 165.0: missing requirement [165.0] osgi.wiring.package; (osgi.wiring.package=com.sun.javadoc) 然后我用一些指令编辑了 pom,这些指令是我在另一个 StackOverflow 问题中找到的 Pax Exam 问题与 Apache POI 包装的捆绑包 <instructions> <Atlassian-Plugin-Key>${atlassian.plugin.key}</Atlassian-Plugin-Key> <!-- Add package to export here --> <Export-Package>com.sony.poc.api,</Export-Package> <_exportcontents> org.apache.poi.*;version=${poi.version}, org.openxmlformats.schemas.*;version=${poi.schema.version}, schemasMicrosoftComOfficeExcel.*;version=${poi.schema.version}, schemasMicrosoftComOfficeOffice.*;version=${poi.schema.version}, schemasMicrosoftComOfficePowerpoint.*;version=${poi.schema.version}, schemasMicrosoftComVml.*;version=${poi.schema.version}, org.etsi.uri.*;version=${poi.security.version} </_exportcontents> <!-- Add package import here --> <Import-Package> com.sun.javadoc;resolution:=optional, com.sun.tools.javadoc;resolution:=optional, org.apache.crimson.jaxp;resolution:=optional, org.apache.tools.ant;resolution:=optional, org.apache.tools.ant.taskdefs;resolution:=optional, org.apache.tools.ant.types;resolution:=optional, junit.framework.*;resolution:=optional, junit.textui.*;resolution:=optional, org.junit.*;resolution:=optional, org.apache.xml.security.*;resolution:=optional, org.apache.jcp.xml.dsig.internal.dom.*;resolution:=optional, org.springframework.osgi.*;resolution:="optional", org.eclipse.gemini.blueprint.*;resolution:="optional", *</Import-Package> <DynamicImport-Package> org.apache.xmlbeans.*, schemaorg_apache_xmlbeans.* </DynamicImport-Package> 使用此配置,我收到此错误; Unable to resolve 165.0: missing requirement [165.0] osgi.wiring.package; (osgi.wiring.package=org.apache.xml.resolver) 有人有想法吗? 终于找到解决办法了。 我已将它们添加为依赖项 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>${poi.version}</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-scratchpad</artifactId> <version>${poi.version}</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>${poi.version}</version> <exclusions> <exclusion> <groupId>stax</groupId> <artifactId>stax-api</artifactId> </exclusion> <exclusion> <groupId>xml-apis</groupId> <artifactId>xml-apis</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.codehaus.woodstox</groupId> <artifactId>woodstox-core-asl</artifactId> <version>4.4.1</version> </dependency> 还将这些添加到 Import-Package 标签内部 *;resolution:=optional, com.ctc.wstx.stax.* 仅此而已。 我应该将 Atlassian Jira 的 pom.xml 放在哪里?
我从“mvn clean install”中收到以下错误 [错误] /private/tmp/framework/src/main/java/org/jboss/narayana/txframework/api/annotation/transaction/WSBA.java:[21,65] 不兼容...
在 Intellij IDE 中找不到插件“maven-clean-plugin:”
我在 pom.xml 中添加了以下内容。 maven-clean-插件 <
使用多个已安装版本(Java 8、11、17)中的特定 Java 版本运行 Maven 项目
我的系统上安装了多个Java版本(Java 8、11和17),并且我需要使用指定的Java版本运行我的Maven项目。实现这一目标的最佳方法是什么? 我正在寻找...
我正在参与两个项目,这两个项目都使用私有maven存储库(使用nexus)。 由于他们都使用自己的第3方库,所以我想设置相应的镜像......
Maven 3.5中可以从maven扩展添加maven存储库吗
是这个代码吗 项目.getPluginRepositories().add(myCustomRepository); 在 Maven 扩展(扩展 AbstractMavenLifecycleParticipant 的类)的 afterProjectsRead 方法内部执行应该...
使用ANTLR结合java和maven来解析表达式并将其转换为SpEL
我需要使用 ANTLR 并将给定表达式转换为其等效的 spring 表达式语言。下面是一组简单的示例输入和输出表达式。 输入:(帐户='233AS77')AND(代码=...
我正在尝试在本地 Maven 存储库中添加 Oracle JDBC 驱动程序。我找到了这个链接来这样做。 我想在 Inside IntelliJ IDEA 中做同样的事情。有没有办法从 IntelliJ 执行 mvn 命令
这是我的父母 pom 4.0.0 com.github.fish56 Maven模块 这是我的父母 pom <modelVersion>4.0.0</modelVersion> <groupId>com.github.fish56</groupId> <artifactId>MavenModules</artifactId> <version>1.0-SNAPSHOT</version> <modules> <module>dao</module> </modules> <packaging>pom</packaging> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.6</version> <scope>import</scope> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> </dependency> </dependencies> </dependencyManagement> 这是我的子模块的 pom <parent> <artifactId>MavenModules</artifactId> <groupId>com.github.fish56</groupId> <version>1.0-SNAPSHOT</version> <relativePath>../pom.xml</relativePath> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>dao</artifactId> <dependencies> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> </dependency> </dependencies> 我希望子模块可以继承父模块的依赖,但是失败了。 我无法在我孩子的 pom 中使用 Lombok 或 Junit。 这是我的文件树 . ├── dao │ ├── pom.xml │ ├── src │ └── target ├── pom.xml 我认为应该有一种方法可以在所有模块之间共享一些依赖项,但我找不到解决方案。 在父级POM中,<dependencies>和<dependencyManagement>的主要区别如下: <dependencies>部分中指定的工件将ALWAYS作为子模块的依赖项包含在内。 在 <dependencyManagement> 部分中指定的工件,如果也在子模块本身的 <dependencies> 部分中指定,则将仅包含在子模块中。 请通过以下链接了解更多信息: Maven 中依赖管理和依赖关系的区别 您导入 lombok BOM <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.6</version> <scope>import</scope> </dependency> 然后你尝试将它用作依赖项。但 BOM 只是 dependencyManagement 条目的列表。它不能是子项目的依赖项。
突然,在 GitLab 中运行 Maven 3.9.5,并在项目中本地安装了缓存的 .m2 存储库,我收到以下消息: [INFO] Artifact XXX 存在于本地存储库中,但已缓存 夫...
有一个maven项目,有几个模块。所有模块都具有相同的版本 1.2.0-SNAPSHOT。 在构建项目时,在 CLI 参数中指定模块名称(例如运行一些测试...
Maven POM 可以并且应该指定它是否需要 Maven 3 或更高版本吗?
我目前正在对使用 Maven 的 Java 项目进行一些清理,并使用 NetBeans IDE 来“调试”POM 中的问题。我在IDE中设置了Maven 3.0.4作为Maven版本,但是其他开发者...
如何使用本地Maven存储库引用另一个基于Spring的项目?
有两个项目。导出(导出某些功能)和导入(使用上述导出功能)。 从导出项目中 mvn clean install 然后添加...
即使另一个配置文件被激活,如何保持 activeByDefault 的 Maven 配置文件处于活动状态?
我的 pom.xml 中有一个配置文件,它应该始终处于活动状态,除非它被明确停用(-P !firstProfile)。 我通过使用 activeByDefault 标志解决了这个问题: 我的 pom.xml 中有一个配置文件,除非明确停用(-P !firstProfile),否则它应该始终处于活动状态。 我通过使用 activeByDefault 标志解决了这个问题: <profiles> <profile> <id>firstProfile</id> <activation> <activeByDefault>true</activeByDefault> </activation> ... </profile> </profiles> 现在在同一个 pom.xml 中,我定义了第二个配置文件,只有当配置文件真正激活时(-P secondaryProfile),它才应该处于活动状态。 因此默认行为是:firstProfile 处于活动状态,secondProfile 处于非活动状态。 在其他时候,除了第一个配置文件之外,我还想激活第二个配置文件。 现在的问题是,如果我使用“-P secondaryProfile”执行此操作,则 firstProfile 不幸会被停用。 Maven 文档指出了这一点: ... 该配置文件将自动 对所有构建都有效,除非另一个 激活同一个 POM 中的配置文件 使用前面描述的一种 方法。所有处于活动状态的配置文件 默认情况下会自动 当 POM 中的配置文件被停用时 在命令行上激活或 通过其激活配置。 ... 是否有可能以某种方式保持第一个配置文件始终处于活动状态(无需在settings.xml中声明它)? 一个技巧是避免 activeByDefault,而是通过缺少属性来激活配置文件,例如: <profiles> <profile> <id>firstProfile</id> <activation> <property> <name>!skipFirstProfile</name> </property> </activation> ... </profile> </profiles> 然后您应该能够使用 -DskipFirstProfile 停用配置文件 或使用 -P !firstProfile,但否则配置文件将处于活动状态。 参见:Maven:完整参考,配置文件激活 - 通过缺少属性进行激活 我希望有这样的可能性,但我经常错过它。我能找到的唯一相关的 JIRA 问题是这个: MNG-4917:配置文件未激活,即使其 activeByDefault 设置为 true 已解决为Not A Problem。 我已经停止使用activeByDefault,因为这种“全有或全无”的方法让它对我来说毫无价值。 更改此行为的唯一方法是编写自己的 DefaultProfileSelector 替代品,使用 @Component( role = ProfileSelector.class ) 将其注册为丛组件并将其放入 ${MAVEN_HOME}/lib/ext 中(这样它将被选为默认配置文件选择器) 。 (如果您使用的是 Maven 3.0.2 或更早版本,您还必须在加载 ${MAVEN_HOME}/bin/m2.conf 之前编辑 lib/ext 来加载 lib) 这个问题很古老,但看起来这个问题可以通过使用 activeProfile 而不是 activeByDefault 来解决。我使用的是 Maven 3.3.9,但该解决方案可能适用于早期版本。 只需在您的 activeProfiles 中列出您的 settings.xml,如下所示: <settings> <profiles> [...] </profiles> <activeProfiles> <activeProfile>my-awesome-profile</activeProfile> </activeProfiles> </settings> 在 my-awesome-profile 中,我有数据库 URL 等设置,因此它们始终 适用。在这里,我激活第二个配置文件,resolve-from-central: $ mvn help:all-profiles -P resolve-from-central [INFO] Scanning for projects... [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building Maven Stub Project (No POM) 1 [INFO] ------------------------------------------------------------------------ [INFO] [INFO] --- maven-help-plugin:2.2:all-profiles (default-cli) @ standalone-pom --- [INFO] Listing Profiles for Project: org.apache.maven:standalone-pom:pom:1 Profile Id: resolve-from-central (Active: true , Source: settings.xml) Profile Id: my-awesome-profile (Active: true , Source: settings.xml) Profile Id: resolve-from-internal (Active: false , Source: settings.xml) 注意 my-awesome-profile 仍然处于活动状态。耶! 配置文件是将一些秩序带入 POM 的好方法。 特别是如果您出于不同目的多次执行同一插件。 使用文件: <profile> <id>alwaysActive</id> <activation> <file><exists>.</exists></file> </activation> ... </profile> 这始终是正确的(除非有人在 Maven 启动期间删除了该目录:)。使用 Maven 3.6.0 进行测试。 这也可能是区分项目类型的好方法。例如,我的项目始终存在module.json。 使用配置文件激活扩展 有一些用于配置文件激活的 Maven 扩展。其中一个在叉子里: https://github.com/OndraZizka/el-profile-activator-extension 您可以简单地在命令行上列出您想要激活的所有配置文件,如下所示: -P 轮廓-1,轮廓-2 maven 被设计为允许自动激活多个配置文件,但是如果您使用 -P 覆盖它,则只会激活参数中列出的配置文件。 您无法保持默认配置文件处于活动状态,但您可以获取该配置文件的内容(示例中的 ...)并将其移动到 pom 的主要部分。 仅仅因为您正在使用配置文件,并不意味着您所做的一切都需要在配置文件中。 这是我针对 activeByDefault 的解决方法,它因设计而被破坏,请参阅 MNG-4917。感谢 Sean Patrick Floyd 在他的回答中提供了该问题的链接。 <activation> <jdk>[1.)</jdk> </activation>