Tag: maven

在Spring配置文件中访问maven项目版本

我想在页面中显示我当前运行的Web应用程序版本。 该项目基于Maven,Spring和Wicket。 我想以某种方式获得maven的${project.version}的价值并在我的spring XML文件中使用它,类似于我使用Spring PropertyPlaceholderConfigurer读取属性文件以获取我在我的应用程序中使用的设置的方式。 如果我在我的Spring配置中将maven project.version作为变量提供,我可以这样做: ${project.version} 我怎样才能做到这一点?

Maven Failsafe插件:如何使用集成前和集成后测试阶段

我不完全清楚如何最好地使用Maven Failsafe插件进行集成测试。 我的用例是针对本地MySQL数据库测试SQL查询。 我知道数据库应该在pre-integration-test阶段启动,并在post-integration-test期间关闭。 但是我如何指定呢? 我应该在我的pom.xml中放一个命令行吗? 或者我应该使用特定注释进行注释的方法?

maven-assembly-plugin:如何使用appendAssemblyId

我有一个多模块Maven项目,在一个模块中我想在构建期间创建两个工件: 主要工件是一个jar库,其他一些模块将依赖它。 一个执行一些辅助函数的可执行jar文件。 没有其他模块依赖于此,它仅供用户在某些情况下手动运行。 这是我用来配置maven-assembly-plugin插件的代码: maven-assembly-plugin 2.4 dist-assembly package single bso jar-with-dependencies helper-${project.version} false HelperMain 我将appendAssemblyId设置为false ,否则-jar-with-dependencies将被附加到最终名称,我不认为需要它。 省略它可以提供更清晰,更易于使用的文件名。 当我运行mvn integration-test我收到以下警告: [警告]配置选项:’appendAssemblyId’设置为false,并且缺少’classifier’。 它不会附加汇编文件:[…] / target / helper-5.0.0-SNAPSHOT.jar,而是成为主项目工件的文件。 注意:如果为此项目提供了多个描述符或描述符格式,则此文件的值将是不确定的! [警告]用程序集文件替换预先存在的项目主工件文件:[…] / target / my.module-5.0.0-SNAPSHOT.jar:[…] / target / helper-5.0.0- SNAPSHOT.jar 有两件事激怒了我: 尽管警告声称它将用helper-5.0.0-SNAPSHOT.jar替换my.module-5.0.0-SNAPSHOT.jar,但它实际上并没有这样做,并且当构建完成时,两个文件仍然具有不同的大小。 为什么有关更换工件的警告出现? 似乎classifier器已被弃用,为什么警告要求我使用它?

将AspectJ添加到pom.xml改为使用Maven的Java版本,为什么?

更新:这是我的maven-compiler-plugin配置: org.apache.maven.plugins maven-compiler-plugin 2.3.2 1.6 1.6 我在使用Maven构建的多项目应用程序上工作。 我们决定添加AspectJ,所以我将以下代码添加到顶级项目中的pom.xml :(来自官方文档) … … org.aspectj aspectjrt 1.7.3 … … org.codehaus.mojo aspectj-maven-plugin 1.5 compile test-compile … … 以及每个下属项目的以下片段: … …. … org.codehaus.mojo aspectj-maven-plugin … org.aspectj aspectjrt …. … 不知怎的,这个修改已经覆盖了我使用的Java版本。 如果我运行build我会得到多个这样的错误: 语法错误,注释仅在源级别为1.5或更高时可用 这让我怀疑我的Java版本(原来是1.6)以某种方式还原为1.4。 我什么也没做 – 至少不是故意的 – 可能影响Java版本,所以我怀疑上面提到的AspectJ相关代码负责改变。 我的问题是AspectJ如何改变Java版本以及如何解决这个问题。 或者我是否完全误解了一些事情,我是否走错了路?

可执行jar将找不到属性文件

我在程序中使用此代码来加载属性文件: Properties properties = new Properties(); URL url = new App().getClass().getResource(PROPERTIES_FILE); properties.load(url.openStream()); 代码在Eclipse中运行良好。 然后我将程序打包成一个名为MyProgram.jar的JAR,并运行它,我在第二行得到一个NullPointerException。 JAR不包含属性文件,它们都在同一目录中。 我正在使用Maven来创建JAR。 我该如何解决这个问题? 更新:我不想将属性文件添加到JAR,因为它将在部署时创建。

为什么项目布局资源与Java源代码分开?

为什么maven将资源保存在Java源的单独“源文件夹”中? 根据我的经验,在Java中,资源文件大多被视为Java源文件,当“编译”时,只需要按类复制,最终打包在jar中,并通过类加载器的方法访问getResource / getResourceAsStream ,通过classpath 。 我个人认为将资源文件与Java源代码分开是一种无用的复杂性。 你怎么看? maven是否有充分理由将资源与资源分开? 有没有使用src/main/resources和src/test/resources并使用maven在src/main/java和src/test/java保存资源的计数器指示?

如何使用来自另一场战争的类文件

我们有两个不同的Web应用程序,我们希望将一个战争的控制器扩展到另一个战争。 我们正在使用maven来构建项目。 包括战争,我们已经将其依赖 com.abc.exchange employer 2.3.M2-SNAPSHOT war compile 它无法构建给定类未找到的exception。 任何人都可以帮我解决这个问题吗? 我收到错误maven构建失败: [INFO] ———————————————————————— [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.3.2:compile (default-compile) on project agent-war: Compilation failure: Compilation failure: [ERROR] \projects\trunk_new\agent\src\main\java\com\platform\agent\web\AgentEmployeeController.java:[22,41] cannot find symbol [ERROR] symbol : class EmployeeController [ERROR] location: package com..platform.employer.web

从POM.xml获取MavenProject – pom解析器?

是否可以从pom.xml文件中获取org.apache.maven.project.MavenProject的实例或POM的其他对象forms? 提前致谢。

maven中javac编译命令错误的解决方法

我遇到了Java编译器中的一个错误,其中提交用于编译的文件的顺序可能导致代码无法编译。 我已经深入研究了代码,以找出可以重现问题的最少量代码,从而生成三个源文件 (每个1个类)。 public interface ActionSpec { public abstract int run(String param); } public enum Actions implements ActionSpec { SKIP { public int run(String d) { return 0; } }; } public class Program { public static void main(String[] args) { Actions.SKIP.run(“hello”); } } 通过以特定顺序使用javac参数可以重现该问题。 简而言之,为了成功,必须始终在使用它的Program类之前编译Actions类,否则javac无法以理智的方式处理它: # this case fails echo “Trying order: javac Program.java […]

Nexus接受上传,但表示失败了

当我执行mvn release:perform在父POM上mvn release:perform时,服务器正在响应有关其中一个子项目(文件名已编辑)的错误: [错误]无法在项目上执行目标org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy-file(default-cli):无法部署工件:无法将工件从/向存储库传输:无法转移文件。 返回码为:400,ReasonPhrase:错误请求。 但是,此子项目的所有文件都已成功上载! 我看到一个新目录(以发行版本号命名),它包含了人们所期望的所有.jar,.pom,.md5和.sha1文件。 我无法访问Nexus服务器,但我想知道是什么原因造成的,以及如何解决它。 是否有可能Maven试图两次上传这个特定的子项目? 如果是这样,为什么Maven会这样做,我怎么能阻止它呢? 更新:如果您遇到同样的问题,请查看本文中最热门投票的答案。 我运行了mvn help:effective-pom ,发现有问题的项目实际上有两次部署阶段的执行。 删除其中一个执行解决了我的问题。