小编JF *_*ier的帖子

Maven耳塞 - 不使用干净时"加倍"神器

通过Maven ear插件构建耳朵时,我体验到应用package不会clean导致不一致的结果:如果我更改了依赖项的版本,那么依赖项现在会在旧版本和新版本中出现两次.如果我在jar名称中构建没有版本号的耳朵,我只得到一个jar,但旧版本没有正确替换.

我查看了源代码

http://svn.apache.org/viewvc/maven/plugins/tags/maven-ear-plugin-2.10.1/src/main/java/org/apache/maven/plugin/ear/EarMojo.java?view=标记

特别是来自436的行很有意思:检查是否更新目标文件,但显然只检查绝对路径和最后修改日期.

总结:我是否认为更改依赖项(或其版本)始终需要clean在构建之前调用?还是有一些package我错过的情报?

java maven maven-ear-plugin

17
推荐指数
2
解决办法
511
查看次数

从lambda表达式到用户定义类型的隐式转换

我想定义从(特定)lambda表达式到用户定义类型的隐式转换.我尝试了以下方法:

public static implicit operator DualElement<T>(Func<OPTatom, OPTatom, T> atomMap)
{
    return new DualElement<T>(e => atomMap(e[0],e[1]));
}
Run Code Online (Sandbox Code Playgroud)

然后我试了一下

DualElement<double> dubidu = (i, j) => cost[i, j];
Run Code Online (Sandbox Code Playgroud)

它给出了"无法转换lambda表达式...因为它不是委托类型"

相反,有效的是:

DualElement<double> dideldu = (Func<OPTatom, OPTatom, double>)((i, j) => cost[i, j]);
Run Code Online (Sandbox Code Playgroud)

我猜,lambda表达式没有'Func'类型,所以我必须在隐式转换中加入不同的东西.

有人可以给我一个暗示吗?

c# lambda implicit-conversion

16
推荐指数
1
解决办法
2645
查看次数

将多个Maven目标组合到一个事务中(例如部署和站点部署,如果站点部署失败怎么办?)

我配置了构建服务器

clean javadoc:jar deploy site-deploy

现在,如果站点部署失败(因为站点没有构建,或者有人使用了错误的父pom),构建服务器显示构建失败,但部署已经应用.

有没有办法以事务方式"组合"部署和站点部署?

或者我应该使用不同的目标/阶段链(例如install之前site-deploy)?

java deployment transactions maven

16
推荐指数
2
解决办法
806
查看次数

版本范围为gradle

在gradle依赖项中指定版本范围的可能方法有哪些?我看到了一些1. +符号,但我没有找到一个真正说明可行和不可行的文档.此外,我不知道Maven系列是否也可以使用.

有人可以给我一个简短的概述,以便我能理解规则吗?

dependencies repository gradle

15
推荐指数
1
解决办法
5663
查看次数

禁用Maven依赖项中介

由于我不相信Maven在依赖中介中为我选择"最佳"版本,如果存在未在pom中明确修复的版本冲突(通常使用dependencyManagement),我想使构建失败.

执行器插件的dependencyConvergence规则似乎是我正在寻找的,但不幸的是,它无法处理*-exludes(https://issues.apache.org/jira/browse/MENFORCER-195),所以我无法真正使用它.

有没有其他方法可以阻止Maven应用"最近的依赖性获胜规则",但是让pom的所有者决定使用哪个版本?

java maven

14
推荐指数
1
解决办法
740
查看次数

依赖管理的传递效应

在Maven中,您可以通过dependencyManagement中的条目覆盖传递依赖项的版本号,因为dependencyManagement优先于传递依赖项定义.

但是(传递)依赖的poms中的dependencyManagement定义呢?它们是否被考虑过?如果是这样,它们会覆盖什么,它们如何被覆盖?

java dependency-management maven transitive-dependency

12
推荐指数
1
解决办法
409
查看次数

从多模块项目发布bom

我们是一家大型公司,拥有大约2000个独立的Java项目.由于历史原因,我们没有多模块项目,但我们想介绍它们.

从逻辑上讲,我们已经拥有了"团体"项目,即负责(例如)50个密切相关项目的人.这个人定期发布一份BOM,其中包含这50个项目的近期连贯版本.

现在抓住这50个项目并将它们放入一个大的多模块项目中会很有意义.但是,有必要发布BOM,因为其他项目(我们组之外)应该具有一致的版本.

总而言之,我们需要一个BOM,其中包含属于多模块项目的所有50个项目的版本.我想知道创建这样一个BOM的"Maven方式"是什么.我能想到的是:

  • bom是多模块项目的第51个项目.依赖项的版本由父pom中的属性设置.
  • bom是根据多模块项目中存在的信息生成的,并作为副工件发布(这可能需要我们为此编写Maven插件).

什么是可取的?

java maven multi-module maven-bom

11
推荐指数
1
解决办法
664
查看次数

如果创建一个站点,如何避免多次调用javadoc?

我想与javadoc和Maven站点一起部署一个工件.我用

clean javadoc:jar site deploy site:deploy
Run Code Online (Sandbox Code Playgroud)

(在site和之间的分割site:deploy只是为了避免在deploy失败的情况下部署站点).

现在javadoc创建了两次 - 一次进入javadoc:jar,一次进入site.是否可以只创建一次并将其用于javadoc-jarNexus和Maven站点?

java javadoc maven maven-javadoc-plugin maven-site-plugin

11
推荐指数
1
解决办法
248
查看次数

如何在Sonatype Nexus上启用CORS?

我想使用AngularJS作为前端开发针对不同事物的Monitoring-WebApp。核心元素之一是Nexus工件/存储库的概述。当我请求REST-API时,出现以下错误:

No 'Access-Control-Allow-Origin' header is present on the requested resource.
Origin 'http://localhost:9090' is therefore not allowed access.
Run Code Online (Sandbox Code Playgroud)

要解决此错误,我需要修改响应标头以启用CORS。

如果有人熟悉这种类型的问题并可以给我答案,那就太好了!

repository cross-domain nexus maven cors

9
推荐指数
1
解决办法
1217
查看次数

ejb与客户端工件 - 运行时依赖?

我们公司在两件工件中创建了一个ejb.impl工件包含实现,客户端工件包含所有接口.这意味着impl工件对客户端工件具有编译依赖性.

现在,在运行时,客户端工件需要impl工件 - 否则容器无法注入所需的对象.这意味着耳朵需要包含所有客户端工件的impl工件.

这是否意味着客户端工件应该runtime依赖于impl工件?或者是否应该避免这些"循环"依赖,即使一个方向是另一个方向compile,另一个是runtime

java dependencies dependency-injection maven

8
推荐指数
1
解决办法
230
查看次数