我有servlet-api版本2.5作为pom.xml中提供的范围。 这里是我的项目的依赖项的一部分:树的输出。 “从2.3版本pipe理的版本;从编译pipe理的范围”是什么意思? [INFO] +- commons-logging:commons-logging:jar:1.1:compile [INFO] | \- javax.servlet:servlet-api:jar:2.5:provided (version managed from 2.3; scope managed from compile) 这是否意味着在我的类path上有2.3版本的传递依赖? 我的WAR文件根本没有servlet-api jar,但是我使用旧版本的Spring 2.5.4。 我怀疑Spring框架依赖于servlet-api 2.3。
我通常在parent-project/pom.xml放置一个<dependencyManagement>部分。 这个<dependencyManagement>部分包含像这样的子模块(即没有<scope>元素)的所有依赖关系的声明和版本: <dependencyManagement> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.10</version> </dependency> </dependencies> </dependencyManagement> 在所有的子模块(即moduleX / pom.xml)中,我有: <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <scope>test</scope> </dependency> </dependencies> 显然,在这个例子中,我为同一个依赖重复了<scope>test</scope>多次(每个子模块需要junit一次)。 我的问题是:有关<scope>声明的最佳实践是什么? 将它放在<dependencyManagement>会更好吗? 或者是最好把它放在子模块的<dependencies>部分(如在这篇文章中)? 为什么? 这个问题有什么明确的答案吗?
在构build具有许多依赖项的Maven项目时,其中一些依赖项依赖于相同的库,但使用不同的版本,这在运行应用程序时会导致错误。 例如,如果我添加两个不同的项目依赖关系,A和B都依赖于apache公共http客户端,但每个都在不同的版本上,一旦类加载器加载A的apache公共http客户端类,B将尝试使用它们它们已经被类加载器加载了。 但是B的字节码依赖于加载类的不同版本,在运行应用程序时会导致多个问题。 常见的一种是methodnotfoundexception(因为A的http客户端版本不再使用特定的方法)。 什么是避免这种冲突build设的总体策略? 是否必须手动检查依赖关系树来找出哪些公共库互相混淆?
当我尝试在我的项目中编译任何类时,出现以下错误: Error scala: Output path …/eval/target/test-classes is shared between: Module 'eval' tests, Module 'eval' tests Output path …/eval/target/classes is shared between: Module 'eval' production, Module 'eval' production Please configure separate output paths to proceed with the compilation. 我已经看到了如何在IDEA中设置输出path,我已经完成了。 但是,由于错误声称它是在同一模块之间共享,我无法解决它。 Obs .:使用Maven和IntelliJ IDEA。 请,谁能帮忙?
我正在使用Maven 2 ,我有一个外部的Tomcat 7 。 我想知道如何使用Maven Tomcat插件来运行Tomcat 7。 Maven 3中的Maven Tomcat插件默认运行Tomcat 7。 谢谢。
我写了一个unit testing,写一个文件到文件系统,没有path写入工作目录; 所以如果从项目目录执行,它将写入项目根目录,如果在项目父目录中写入父目录根目录。 那么写入目标目录的正确方法是什么? 很可能是目标目录内的目录? 如果我相当简单地指定target/文件,它将写入父项目目标而不是项目目标。 更新 :我真的想在testing完成后的文件。 该文件是针对需要发送给第三方的第三方的提取格式。 可以打开/closurestesting,以便只有在文件格式更改为重新审批时才能运行。 文件的位置不是一个很大的问题,但是我想要一些容易find的东西。
我已经添加了对我的Maven项目的分析。 <profile> <id>da</id> </profile> <profile> <id>live</id> </profile> <profile> <id>dev</id> </profile> 当我给命令mvn clean install而不指定生成configuration文件。 我需要开发configuration文件默认生成。 我怎样才能做到这一点?
在NetBeans 7.2中,我无法find如何使用-Xlint进行编译:在Maven项目中未选中。 在一个Ant项目下,你可以通过转到项目属性 – >编译来更改编译器标志,但是Maven项目似乎没有任何这样的选项。 有没有什么办法来configurationIDE使用Maven这样的标志进行编译?
我正在使用maven编译一个包,它说构build失败,出现以下编译错误: SpanishTest.java [31,81]用于编码UTF8的无法映射的字符 我在网上search和许多人,从UTF-8到ISO-8859-1的源代码编码似乎工作,但我仍然得到相同的编译错误。 我正在使用32位的Ubuntu。 这是标签在我的pom.xml中的样子 <project.build.sourceEncoding>ISO-8859-1</project.build.sourceEncoding> 即使我将<project.build.outputEncoding>标签更改为ISO-8859-1,我仍然得到错误。是否因为Java版本? 我的系统上安装了sun-java和openjdk。 任何人都可以让我知道该怎么做。 谢谢
我正在使用Travis-CI为我正在开发的一些Java开源项目提供持续集成构build。 通常这工作顺利,但我有一个问题,当POM指定GPG签名,例如 <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-gpg-plugin</artifactId> <version>1.4</version> <executions> <execution> <id>sign-artifacts</id> <phase>verify</phase> <goals> <goal>sign</goal> </goals> </execution> </executions> </plugin> 这会导致Travis构build失败 – 显然是因为在运行mvn install时没有可用的密码。 查看这个版本的例子。 configurationMaven和/或Travis跳过CItesting版本的GPG签名的最佳方法是什么,但是当我执行正确的版本构build时仍然执行GPG签名?