标签: maven-2

如何使用Maven创建具有依赖关系的可执行JAR?

我想将我的项目打包在一个可执行的JAR中进行分发.

如何将所有依赖JAR的Maven项目打包到我的输出JAR中?

java build-automation build-process maven-2 executable-jar

2276
推荐指数
28
解决办法
123万
查看次数

如何告诉Maven使用最新版本的依赖项?

在Maven中,依赖项通常设置如下:

<dependency>
  <groupId>wonderful-inc</groupId>
  <artifactId>dream-library</artifactId>
  <version>1.2.3</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

现在,如果您正在使用频繁发布的库,不断更新<version>标记可能有些烦人.有没有办法告诉Maven始终使用最新的可用版本(来自存储库)?

java dependencies maven-2 maven maven-metadata

761
推荐指数
11
解决办法
52万
查看次数

我可以在没有安装的情况下将jar添加到maven 2 build classpath吗?

在实验/快速和肮脏的模拟开发阶段,Maven2让我发疯.

我有一个pom.xml文件定义了我想要使用的web-app框架的依赖项,我可以从该文件快速生成启动项目.但是,有时我想链接到尚未pom.xml定义文件的第三方库,所以不是pom.xml手动创建第三方库的文件并安装它,并将依赖项添加到我的pom.xml,我只是想告诉Maven:"除了我定义的依赖项,还要包含任何罐子/lib."

看起来这应该很简单,但如果是这样,我就会遗漏一些东西.

任何关于如何做到这一点的指针都非常感谢.除此之外,如果有一种简单的方法将maven指向一个/lib目录并轻松创建一个pom.xml所有封闭的jar映射到单个依赖项,然后我可以一次命名/安装和链接就足够了.

java maven-2

686
推荐指数
14
解决办法
38万
查看次数

使用maven运行单个测试方法

我知道你可以使用以下方法在某个类中运行所有测试:

mvn test -Dtest=classname
Run Code Online (Sandbox Code Playgroud)

但我想运行一个单独的方法,-Dtest = classname.methodname似乎不起作用.

java maven-2 unit-testing

490
推荐指数
9
解决办法
29万
查看次数

如何在Maven中配置编码?

当我maven install在我的多模块maven项目上运行时,我总是得到以下输出:

[WARNING] File encoding has not been set, using platform encoding UTF-8, i.e. build is platform dependent!
Run Code Online (Sandbox Code Playgroud)

所以,我google了一下,但我能找到的是我必须添加:

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
Run Code Online (Sandbox Code Playgroud)

...到我的pom.xml.但它已经存在(在父母中pom.xml).

配置<encoding>maven-resources-plugin或maven-compiler-plugin也无法修复它.

所以有什么问题?

java encoding maven-2 maven-3 maven

346
推荐指数
5
解决办法
20万
查看次数

Maven模块+构建单个特定模块

我有一个父项目多模块Maven项目P和三个子模块A,BC.这两个BC是战项目,都依赖于A.

我可以输入mvn compileP和拥有所有的子模块正确的编译的.当我想为特定模块执行操作时,问题就来了.

我希望能够为项目打包一个war B,但是当我从B目录运行package命令时,它会抱怨它找不到依赖项A.

我从这个问题中理解:Maven和依赖模块可能Maven并不是真的设计用于这种类型的依赖解析,但这引出了如何打包的问题B

  1. mvn package我真的想要的时候是否必须运行整个项目层次结构B

  2. 每次要打包时,是否必须将A的快照安装到本地存储库中B

A仍处于活跃开发阶段时,第二种情况并不是很有趣.

这里有什么最佳做法?

java build-process maven-2

345
推荐指数
7
解决办法
20万
查看次数

使用Maven在jar中包含依赖项

有没有办法强制maven(2.0.9)在一个jar文件中包含所有依赖项?

我将一个项目构建到一个jar文件中.我希望将依赖项中的类复制到jar中.

更新:我知道我不能在jar文件中包含一个jar文件.我正在寻找一种方法来解压缩指定为依赖项的jar,并将类文件打包到我的jar中.

java maven-2 packaging jar

329
推荐指数
9
解决办法
40万
查看次数

在Maven存储库中查找Oracle JDBC驱动程序

我想将oracle jdbc驱动程序添加到我的项目中作为依赖项(运行时作用域) - ojdbc14.在MVNrepository站点中,放入POM的依赖关系是:

<dependency>
    <groupId>com.oracle</groupId>
    <artifactId>ojdbc14</artifactId>
    <version>10.2.0.3.0</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

当然这不起作用,因为它不在maven使用的中央存储库中.2个问题:

  1. 如何找到包含此工件的存储库(如果有)?

  2. 如何添加它以便Maven将使用它?

java maven-2 jdbc maven mvn-repo

282
推荐指数
11
解决办法
37万
查看次数

Maven父母pom vs模块pom

在多项目构建中似乎有几种方法来构建父pom,我想知道是否有人对每种方式的优点/缺点有任何想法.

拥有父pom的最简单方法是将它放在项目的根目录中,即

myproject/
  myproject-core/
  myproject-api/
  myproject-app/
  pom.xml
Run Code Online (Sandbox Code Playgroud)

其中pom.xml既是父项目又是-core -api和-app模块

下一个方法是将父项分离到它自己的子目录中,如中所示

myproject/
  mypoject-parent/
    pom.xml
  myproject-core/
  myproject-api/
  myproject-app/
Run Code Online (Sandbox Code Playgroud)

父pom仍然包含模块,但它们是相对的,例如../myproject-core

最后,有一个选项,模块定义和父项分开,如

myproject/
  mypoject-parent/
    pom.xml
  myproject-core/
  myproject-api/
  myproject-app/
  pom.xml
Run Code Online (Sandbox Code Playgroud)

父pom包含任何"共享"配置(dependencyManagement,属性等),myproject/pom.xml包含模块列表.

目的是可扩展到大规模构建,因此应该可以扩展到大量项目和工件.

一些奖金问题:

  • 在源代码控制,部署目录,常见插件等中定义各种共享配置的最佳位置在哪里(我假设父母,但我经常被这种情况所困扰,他们最终在每个项目中而不是常见的一个).
  • maven-release插件,hudson和nexus如何处理你如何设置你的多项目(可能是一个巨大的问题,如果有人因为如何设置多项目构建而被抓住了,那就更多了?)

编辑:每个子项目都有自己的pom.xml,我把它留了下来以保持简洁.

java build-process maven-2

279
推荐指数
4
解决办法
15万
查看次数

Maven工件和groupId命名

我目前正在将一些项目从Ant迁移到Maven.循规蹈矩,因为我,我想用行之有效的约定查找groupIdartifactId,但我找不到任何详细的约定(也有一些,但不包括我想了解一下点).

以此项目为例,首先是Java包: com.mycompany.teatimer

Tea计时器实际上是两个单词,但Java包命名约定禁止插入下划线或连字符,所以我将它们全部写在一起.

我选择了groupId相同的包ID,因为我认为这是一个好主意.是吗?

最后,我必须选择一个artifactId,我目前去了teatimer.但是当我查看其他Maven项目时,他们使用连字符来分割artifactIds中的单词,如下所示:tea-timer.但是当连接到groupId:时确实看起来很奇怪com.mycompany.teatimer.tea-timer.

你会怎么做?

另一个例子:

包裹名字: com.mycompany.awesomeinhouseframework

groupId:( com.mycompany.awesomeinhouseframework?)

artifactId:( awesome-inhouse-framework?)

maven-2 naming-conventions

269
推荐指数
3
解决办法
23万
查看次数