小编Geo*_*met的帖子

如何自动将所有javadoc package.html文件转换为package-info.java文件?

我们package.html在项目中使用了很多遗留文件,我们希望将它们转换为package-info.java文件.手动执行此操作不是一种选择(文件太多).是否有一种自动化的好方法?

我们想要转换它们有几个原因:

  • 来自javadoc规范:此文件是JDK 5.0中的新文件,比package.html更受欢迎.

  • 不要在同一代码库中混合使用这两种类型的文件

  • 为了避免Intellij/Eclipse构建将这些*.html文件放在我们的类dirs中(并且可能在发布二进制jar中),所以它们的行为就像我们的其他普通html资源一样.

java javadoc

10
推荐指数
1
解决办法
1519
查看次数

如何以与比例无关的方式检查BigDecimal是否在Set或Map中?

BigDecimal的equals()方法也比较比例,所以

new BigDecimal("0.2").equals(new BigDecimal("0.20")) // false
Run Code Online (Sandbox Code Playgroud)

有人质疑它为何如此行事.

现在,假设我有一个Set<BigDecimal>,如何检查0.2是否在该集合中,是否独立?

Set<BigDecimal> set = new HashSet<>();
set.add(new BigDecimal("0.20"));
...
if (set.contains(new BigDecimal("0.2")) { // Returns false, but should return true
    ...
}
Run Code Online (Sandbox Code Playgroud)

java bigdecimal

10
推荐指数
1
解决办法
1844
查看次数

使用maven tycho构建一个由maven-dependency-plugin下载的清单条目Bundle-ClassPath

我有一个带有此清单的eclipse插件:

...
Bundle-ClassPath: .,
 lib/drools-api.jar,
 lib/drools-core.jar,
...
Run Code Online (Sandbox Code Playgroud)

现在我们不想放入drools-api.jardrools-core.jar控制源代码,因此我们使用插件从maven存储库中获取它们:

  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <executions>
      <execution>
        <id>copy-bundle-classpath-libs</id>
        <phase>validate</phase>
        <goals>
          <goal>copy</goal>
        </goals>
        <configuration>
          <outputDirectory>lib</outputDirectory>
          <overWriteReleases>true</overWriteReleases>
          <overWriteSnapshots>true</overWriteSnapshots>
          <overWriteIfNewer>true</overWriteIfNewer>
          <stripVersion>true</stripVersion>
          <artifactItems>
            <artifactItem>
              <groupId>org.drools</groupId>
              <artifactId>drools-api</artifactId>
            </artifactItem>
            <artifactItem>
              <groupId>org.drools</groupId>
              <artifactId>drools-core</artifactId>
            </artifactItem>
            ...
Run Code Online (Sandbox Code Playgroud)

但是,我们第一次构建此模块时,它会失败,因为这会发生:

[WARNING] Missing classpath entry lib/drools-api.jar ...
[WARNING] Missing classpath entry lib/drools-core.jar ...
...
[INFO] --- maven-dependency-plugin:2.1:copy (copy-bundle-classpath-libs) ... ---
...
[INFO] Copying drools-api-5.2.0-SNAPSHOT.jar to .../lib/drools-api.jar
[INFO] Copying drools-core-5.2.0-SNAPSHOT.jar to .../lib/drools-core.jar
...
[INFO] --- maven-osgi-compiler-plugin:0.10.0:compile (default-compile) ... ---
...
[INFO] …
Run Code Online (Sandbox Code Playgroud)

java osgi build tycho maven

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

配置hudson maven作业以在出现测试失败时继续构建,但仅在没有测试失败时进行部署

我已经为我们的maven多项目创建了一个hudson作业,其中包含5个模块,用于将SNAPSHOT工件部署到maven存储库.没关系,只要它成功构建而没有测试失败.但是,现在我想满足以下要求:

  • 当模块出现测试失败时,构建应继续构建并测试其他模块,但变为黄色.使用-Dmaven.test.failure.ignore=true完成,但在下一个要求失败.
  • 当模块出现测试失败时,不应将任何工件部署到maven存储库.其他项目依赖于此项目的快照,而这些项目仅希望使用没有任何失败测试的最新快照.
  • 最好使用hudson maven集成而不是免费脚本我们得到哈德森报告页面(每个模块的红色/黄色/蓝色状态,构建日志错误着色,......).特别是运行maven构建两次(第一次mvn test -Dmaven.test.failure.ignore=true,比第一次mvn deploy -DskipTests)不是解决方案,因为它是性能损失并且它混淆了哈德森报告页面并且它不是原子的(它在第二次构建中再次从存储库更新).

有没有办法实现这个目标?

maven-2 hudson maven-3 maven jenkins

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

如何从可能返回null的方法中分配变量?

我有以下代码,我将Java方法的结果分配给freemarker变量.

<#assign singleBenchmark = solverBenchmark.findSingleBenchmark(problemBenchmark)>
Run Code Online (Sandbox Code Playgroud)

问题是该Java方法的返回值可能null.即使我检查该变量是否不是null:

<#if !singleBenchmark??>
    <td></td>
<#else>
    <td>${singleBenchmark.score}</td>
</#if>
Run Code Online (Sandbox Code Playgroud)

<#assign ...>如果Java方法返回null,它仍会在行上崩溃,但有以下异常:

freemarker.core.InvalidReferenceException: Error on line 109, column 45 in index.html.ftl
solverBenchmark.findSingleBenchmark(problemBenchmark) is undefined.
It cannot be assigned to singleBenchmark
    at freemarker.core.Assignment.accept(Assignment.java:111)
Run Code Online (Sandbox Code Playgroud)

如何在不必findSingleBenchmark在我的ftl中多次调用该方法的情况下避免此异常?

java freemarker

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

将reveal.js演示文稿导出到LibreOffice(odp)或PowerPoint(ppt,pptx)

如何将reveal.js演示文稿导出到LibreOffice(*.odp)或PowerPoint(*.ppt,*.pptx)?

导出到PDF相当容易,但是为了让我的同事重复使用我的幻灯片(并将它们与自己的幻灯片混合),他们需要ODP或PPT.我将始终坚持使用html幻灯片(例如reveal.js)因为它是git友好的.

powerpoint libreoffice reveal.js

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

将CompareToBuilder替换为Java 8的Comperator.comparing(...).thenComparing(...)

在Java 8之前,我们实现Comparable.compareTo(...)如下:

public int compare(Person a, Person b) {
    return new CompareToBuilder()
            .append(a.getLastName(), b.getLastName())
            .append(a.getFirstName(), b.getFirstName())
            .toComparison();
}
Run Code Online (Sandbox Code Playgroud)

从Java 8开始,我们可以这样做:

public int compare(Person a, Person b) {
    return Comparator
            .comparing(Person::getLastName)
            .thenComparing(Person::getFirstName)
            .compare(a, b);
}
Run Code Online (Sandbox Code Playgroud)

新的Java 8方式可能允许我们放弃commons-lang3依赖.这种新的Java 8更快吗?有没有办法自动迁移?我没有找到IntelliJ的意图.


请注意,当存在反向订单并且涉及非自然比较时,它会变得有点复杂:

public int compare(SingleBenchmarkResult a, SingleBenchmarkResult b) {
    return new CompareToBuilder()
            .append(b.hasAnyFailure(), a.hasAnyFailure()) // Reverse
            .append(a.getAverageScore(), b.getAverageScore(), resilientScoreComparator)
            .toComparison();
}
Run Code Online (Sandbox Code Playgroud)

public int compare(SingleBenchmarkResult a, SingleBenchmarkResult b) {
    return Comparator
            .comparing(SingleBenchmarkResult::hasAnyFailure, Comparator.reverseOrder()) // Reverse
            .thenComparing(SingleBenchmarkResult::getAverageScore, resilientScoreComparator)
            .compare(a, …
Run Code Online (Sandbox Code Playgroud)

intellij-idea comparator java-8 apache-commons-lang apache-commons-lang3

8
推荐指数
2
解决办法
1939
查看次数

在Scala中实现具有原始类型的方法

我在Scala中使用Drools Planner(用Java编写)时遇到了问题.Drools规划器中的一个接口声明为:

public interface Score<S extends Score> extends Comparable<S>
Run Code Online (Sandbox Code Playgroud)

但是另一个界面使用'Score'作为原始类型:

public interface Solution {
    Score getScore();
Run Code Online (Sandbox Code Playgroud)

然后我想在Scala中实现这个接口:

class MySolution extends Solution {
    def getScore: Score = ...
Run Code Online (Sandbox Code Playgroud)

我得到一个编译错误:Scala编译器不允许编写'def getScore:Score'.当我尝试添加'Score [_]'或'Score [whatever]'编译器抱怨类型不兼容时.我该怎么办?

java scala drools drools-planner

7
推荐指数
2
解决办法
851
查看次数

如何通过将整个战争部署到WildFly嵌入式来设置arquillian来测试maven war项目?

我想在嵌入式WildFly实例上对我的战争进行宏(不是微!)黑盒测试.

我的maven项目看起来像这样

<project>
  ...
  <packaging>war</packaging>

  <!-- Lots of classes in src/main/webapp and files in src/main/webapp -->
  <dependencies>
    <!-- Lots of compile/runtime dependencies that change very frequently -->
    <!-- Lots of test dependencies that change very frequently -->
  </dependencies>
</project>
Run Code Online (Sandbox Code Playgroud)

我的arquillian测试需要满足以下要求:

  • 在测试中将整个战争部署到app服务器.这包括所有生产类,所有运行时依赖项和所有src/main/webapp文件.从维护的角度来看,微型部署是不可能的,因为类依赖性和jar依赖性经常发生变化.所以我们不能枚举ShrinkWrap部署中的任何内容.
  • 不要对maven已知pom.xml的test或arquillian.xml 中的任何内容进行硬编码.这包括版本字符串,依赖项列表,包或类列表,应用服务器安装目录等.
  • 不要使用超过1个maven模块.我测试我的战争的测试属于产生战争的同一个maven模块的测试文件夹.
  • 签出我的代码的用户需要能够如此简单地运行测试:
    • 只需打开IntelliJ后,测试需要从IntelliJ运行pom.xml.
    • 使用WildFly嵌入式容器,因此不需要先安装任何东西,不需要先运行任何进程,绝对不需要设置JBOSS_HOME环境变量.
  • 我只对黑盒测试感兴趣,所以我的所有测试都可以作为客户端运行.

理论上,这可以用Arquillian的Maven解析器,嵌入式容器@RunAsClient,maven故障安全插件,一些arquillian.xml魔法和大量的maven魔法来实现.但实际上,我不能让这些东西一起工作,我也找不到任何适合这个场景的文档,所以我希望有人能清楚地展示它们如何协同工作.

shrinkwrap jboss-arquillian wildfly

7
推荐指数
1
解决办法
2589
查看次数

为什么我的reveal.js PDF输出从2.6.2升级到3.5.0后有45 000页而不是350页?

我最近将这个幻灯片从reveal.js 2.6.2 升级到3.5.0.一切正常,除了PDF导出现在有45000页而不是像升级前的350页.

要重现,请单击此链接并在Chrome中询问打印对话框,该对话框已显示页数.

index.html没有改变.它还有这段代码:

<script>
    if (window.location.search.match(/print-pdf/gi)) {
        document.write('<link rel="stylesheet" href="website/reveal/css/print/pdf.css">');
    }
</script>
Run Code Online (Sandbox Code Playgroud)

这仍然相当于最新自述文件的PDF导出说明.

reveal.js

7
推荐指数
1
解决办法
152
查看次数