Questions tagged «maven»

Apache Maven是主要用于Java项目的构建自动化和项目管理工具。该标签用于与特定Maven版本无关的问题。对于与Gradle有关的问题,请使用gradle标签。


30
如何解决Spring Data Maven构建的“生命周期配置未涵盖的插件执行”
我正在尝试使用Spring Data和Neo4j。我首先尝试遵循主站点链接的本指南。特别是,我的pom.xml基于“ Hello,World!”。示例文件。这是导致问题的插件的pom.xml中的一个片段... <plugin> <!-- Required to resolve aspectj-enhanced class features --> <groupId>org.codehaus.mojo</groupId> <artifactId>aspectj-maven-plugin</artifactId> <version>1.0</version> <configuration> <outxml>true</outxml> <aspectLibraries> <aspectLibrary> <groupId>org.springframework</groupId> <artifactId>spring-aspects</artifactId> </aspectLibrary> <aspectLibrary> <groupId>org.springframework.data</groupId> <artifactId>spring-data-neo4j</artifactId> </aspectLibrary> </aspectLibraries> <source>1.6</source> <target>1.6</target> </configuration> <executions> <!-- ERROR HERE IN ECLIPSE SEE BELOW FOR FULL MESSAGE --> <execution> <goals> <goal>compile</goal> <goal>test-compile</goal> </goals> </execution> </executions> <dependencies> …


12
如何告诉Maven使用最新版本的依赖项?
在Maven中,依赖项通常是这样设置的: <dependency> <groupId>wonderful-inc</groupId> <artifactId>dream-library</artifactId> <version>1.2.3</version> </dependency> 现在,如果您正在使用发布频繁的库,则不断更新<version>标记可能会有些烦人。有什么方法可以告诉Maven始终使用最新版本(来自存储库)?

12
Maven中dependencyManagement和依赖关系之间的区别
dependencyManagement和之间有什么区别dependencies?我已经在Apache Maven网站上看到了这些文档。似乎dependencyManagement可以在其子模块中使用在之下定义的依赖项,而无需指定版本。 例如: 父项目(Pro-par)在以下项下定义依赖项dependencyManagement: <dependencyManagement> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8</version> </dependency> </dependencies> </dependencyManagement> 然后在Pro-par的子级中,我可以使用junit: <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> </dependency> </dependencies> 但是,我想知道是否有必要在父pom中定义junit吗?为什么不直接在所需的模块中定义它?

11
在Java / Maven中处理“ Xerces地狱”?
在我的办公室里,仅提及Xerces一词就足以引起开发人员的致命愤怒。粗略地浏览SO上的其他Xerces问题似乎表明,几乎所有Maven用户在某个时候都被该问题“感动”。不幸的是,了解问题需要对Xerces的历史有一点了解... 历史 Xerces是Java生态系统中使用最广泛的XML解析器。几乎所有用Java编写的库或框架都以某种能力使用Xerces(如果不是直接使用,则是透明地使用)。 到目前为止,官方二进制文件中包含的Xerces jar 尚未进行版本控制。例如,Xerces 2.11.0实现jar被命名为xercesImpl.jarnot xercesImpl-2.11.0.jar。 Xerces团队不使用Maven,这意味着他们不将正式发行版上载到Maven Central。 Xerces过去以单个jar(xerces.jar)的形式发布,但被拆分为两个jar,一个包含API(xml-apis.jar),一个包含这些API的实现(xercesImpl.jar)。许多较旧的Maven POM仍声明依赖于xerces.jar。在过去的某个时候,Xerces也发布为xmlParserAPIs.jar,某些较早的POM也依赖于此。 将jar部署到Maven存储库的人分配给xml-apis和xercesImpl jar的版本通常是不同的。例如,即使xml-apis都来自Xerces 2.8.0,也可以给它xml版本1.3.03,给xercesImpl版本2.8.0。这是因为人们经常用实现的规范版本标记xml-apis jar。还有就是这是一个非常不错的,但不完全击穿这里。 使事情复杂化的是,Xerces是JRE中包含的XML处理Java API(JAXP)的参考实现中使用的XML解析器。实现类在com.sun.*名称空间下重新打包,这使得直接访问它们很危险,因为它们在某些JRE中可能不可用。但是,并非所有的Xerces功能都通过java.*和javax.*API 公开;例如,没有API公开Xerces序列化。 令人困惑的是,几乎所有servlet容器(JBoss,Jetty,Glassfish,Tomcat等)都随Xerces一起放在其一个或多个/lib文件夹中。 问题 解决冲突 由于上述某些(或全部)原因,许多组织在其POM中发布和使用Xerces的自定义版本。如果您的应用程序很小并且仅使用Maven Central,那么这并不是真正的问题,但是对于Artifactory或Nexus代理多个存储库(JBoss,Hibernate等)的企业软件而言,这很快就成为一个问题: 例如,组织A可能发布xml-apis为: <groupId>org.apache.xerces</groupId> <artifactId>xml-apis</artifactId> <version>2.9.1</version> 同时,组织B可能发布以下内容jar: <groupId>xml-apis</groupId> <artifactId>xml-apis</artifactId> <version>1.3.04</version> 尽管B的jar版本低于A的版本jar,但Maven不知道它们是相同的工件,因为它们具有不同 groupId的。因此,它不能执行冲突解决,并且两个都 jar将作为已解决的依赖项包括在内: 类加载器地狱 如上所述,JRE在JAXP RI中与Xerces一起提供。将所有Xerces Maven依赖项标记为<exclusion>s或as 会很好<provided>,您所依赖的第三方代码可能会或可能不会与您使用的JDK的JAXP中提供的版本一起使用。另外,您还可以将Xerces jars放在servlet容器中以应对。这给您提供了许多选择:是否删除servlet版本,并希望您的容器在JAXP版本上运行?离开servlet版本更好,希望您的应用程序框架在servlet版本上运行是否更好?如果上面概述的一两个未解决的冲突成功地渗入了您的产品(在大型组织中很容易发生),您很快就会陷入类加载器地狱中,想知道类加载器在运行时选择的是哪个版本的Xerces,是否将在Windows和Linux中选择相同的jar(可能不是)。 解决方案? 我们试过标志认证的所有Xerces的Maven依赖作为<provided>或作为<exclusion>,但这是给难以执行(尤其是大型团队)的文物有这么多的别名(xml-apis,xerces,xercesImpl,xmlParserAPIs,等)。此外,我们的第三方库/框架可能无法在JAXP版本或servlet容器提供的版本上运行。 我们如何最好地使用Maven解决这个问题?我们是否必须对依赖项进行这种细粒度的控制,然后依靠分层的类加载?是否有某种方法可以全局排除所有Xerces依赖关系,并强制我们所有的框架/库使用JAXP版本? 更新:Joshua Spiewak已将Xerces构建脚本的修补程序版本上载到XERCESJ-1454,从而可以上载到Maven Central。投票/观看/贡献这个问题,让我们一劳永逸地解决这个问题。

25
如何强制Maven更新?
我将已经工作的项目导入另一台计算机,并且开始下载依赖项。 显然我的互联网连接崩溃了,现在我得到了以下信息: >Build errors for comics; org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal on project comicsTest: Could not resolve dependencies for project comicsTest:comicsTest:war:0.0.1-SNAPSHOT: The following artifacts could not be resolved: org.springframework:spring-context:jar:3.0.5.RELEASE, org.hibernate:hibernate-entitymanager:jar:3.6.0.Final, org.hibernate:hibernate-core:jar:3.6.0.Final, org.hibernate:hibernate-commons-annotations:jar:3.2.0.Final, org.aspectj:aspectjweaver:jar:1.6.8, commons-lang:commons-lang:jar:2.5, >mysql:mysql-connector-java:jar:5.1.13: Failure to transfer org.springframework:spring-context:jar:3.0.5.RELEASE from http://repo1.maven.org/maven2 was cached in the local repository, resolution will not …
730 maven 

30
在此环境中不提供编译器。也许您是在JRE而不是JDK上运行?
我正在使用m2eclipse在Eclipse中编译项目。我像这样在Eclipse中设置JDK路径: Windows-->preferences-->installed jres--> jdk1.7.xx path 但这显示了一个错误 [ERROR] COMPILATION ERROR : [INFO] ------------------------------------------------------------- [ERROR] No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK? [INFO] 1 error [INFO] ------------------------------------------------------------- [INFO] ------------------------------------------------------------------------ [INFO] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Total time: 1.424s [INFO] Finished at: …

19
当maven说“直到MyRepo的更新间隔过去后,才会重新尝试解析”,该间隔在哪里指定?
使用Maven时,我偶尔会碰到一些来自我尚未构建或未包含在存储库中的第三方存储库中的工件。 我将从Maven客户端收到一条错误消息,提示找不到工件: 未能http://myrepo:80/artifactory/repo在本地存储库中找到org.jfrog.maven.annomojo:maven-plugin-anno:jar:1.4.0,在MyRepo的更新间隔过去或强制执行更新之前,不会重新尝试解决问题-> [帮助1] 现在,我了解了这意味着什么,并且可以简单地重新运行我的命令-U,并且从此以后一切正常。 但是,我发现此错误消息非常不直观,并且正试图让我的同事感到头疼。 我试图弄清楚是否可以修改此update interval设置。 在update interval此错误消息的客户端或服务器端的设置,被提及? 如果是客户端,如何配置? 如果是服务器端,是否有人知道Nexus / Artifactory如何/是否公开这些设置?
586 maven  artifactory 

30
IntelliJ检查给出“无法解析符号”但仍编译代码
平台:IntelliJ社区版10.0.3 SDK:jdk1.6.0_21 操作系统:Windows 7 所以我在IntelliJ上遇到了一个奇怪的情况,这使我感到完全困惑。我设置了一个Maven项目,并将log4j作为依赖项添加到pom.xml文件中。IDEA检查运行正常,我的单元测试全部编译并运行。 然后,我使用mvn install:install-file将hunnysoft的jmime库添加到本地maven存储库中,如下所示。 mvn install:install-file -Dfile=jmime.jar -DgroupId=jmime \ -DartifactId=jmime -Dversion=3.1.1e -Dpackaging=jar Maven将jar文件安装到我的本地存储库中就可以了。 然后,我进入IntelliJ的Settings => Maven => Repository Services,并更新了我的本地存储库(以便IntelliJ重新索引存储库内容)。 最后,我在pom.xml文件中添加了以下依赖性(仅在log4j依赖性之上)。 <dependency> <groupId>jmime</groupId> <artifactId>jmime</artifactId> <version>3.1.1e</version> </dependency> 我现在创建一个新类,如下所示: package com.stackoverflow.question; import org.apache.log4j.Logger; import com.hunnysoft.jmime.ByteString; import com.hunnysoft.jmime.Field; import com.hunnysoft.jmime.FieldBody; public class StackOverflowQuestion { public Field create(String name, String text) { …

23
在Mac OS X上进行Maven安装
我正在尝试按照以下说明通过终端安装Maven 。 到目前为止,我知道了 export M2_HOME=/user/apple/apache-maven-3.0.3 export M2=$M2_HOME/bin export PATH=$M2:$PATH export JAVA_HOME=/usr/java/jdk1.6.0_22 这可能是一个愚蠢的问题,您在哪里可以找到它?
545 macos  maven  maven-3 


29
Maven找不到要运行的JUnit测试
我有一个Maven程序,它可以正常编译。当我运行mvn test它不会运行任何测试(在TESTs标头下说There are no tests to run.)。 我已经用一个超级简单的设置重新创建了这个问题,该设置将在下面以及运行时的输出中包括 -X。 单元测试可以从eclipse正常运行(都使用其默认的junit软件包,而当我包括maven下载的junit.jar时)。也MVNtest-compile可以在test-classes下正确创建该类。我在带有Maven 3.0.2和Java 1.6.0_24的OSX 10.6.7上运行此代码。 这是目录结构: /my_program/pom.xml /my_program/src/main/java/ClassUnderTest.java /my_program/src/test/java/ClassUnderTestTests.java pom.xml: <?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/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>my_group</groupId> <artifactId>my_program</artifactId> <packaging>jar</packaging> <version>1.0-SNAPSHOT</version> <name>My Program</name> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.8.1</version> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.5</source> <target>1.5</target> </configuration> …
416 java  maven  junit  junit4  maven-3 


8
IntelliJ-将Java项目/模块转换为Maven项目/模块
我有一个关于Bitbucket的项目。仅提交源。为了将项目检索到新机器上,我在IntelliJ中使用了Version Control> Checkout from Version Control。 然后,它询问我是否要从此源创建一个新项目,对此我回答“是”。到目前为止,一切都很好。它为我创建了一个不错的Java小项目,由一个模块组成。 但是,将这个项目引入IntelliJ的目的是将其变成Maven项目。我找不到任何可以让我做到这一点的选择! 有没有办法让IntelliJ仅为我生成一个基本的空pom.xml,并为其提供名称,artifactId和存储库?或者,是否首先有办法将项目导入为Maven项目?(每当我尝试从现有资源创建项目时,它都只提供Java项目的选项。)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.