小编Sto*_*oud的帖子

如何查找和恢复已删除的文件

在过去的某个阶段,我有一个"foo.txt",它在Mercurial源代码控制之下.但它现在已被删除.

当我不知道文件被删除的最后一个Mercurial修订版时,如何恢复该文件?

mercurial restore recover delete-file

21
推荐指数
2
解决办法
6387
查看次数

如何使用Maven 3.x为findbugs生成html报告

有没有人设法配置findbugs Maven 3.x插件来生成xml和html报告?(我想要一个用于Jenkins的xml和一个用于在提交之前进行检查的html)

我见过很多文档设置此功能在网络上,但大部分似乎是Maven的2.x的,这是我知道的配置差异(烦人2.x的配置默默3.X忽略) .我是Maven的新手,所以我不确定我是做错了什么还是我遵循旧的指示.

我的pom包含以下内容:

</build>
    </plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>findbugs-maven-plugin</artifactId>
            <version>2.3.3</version>
            <configuration>
                <!-- findbugs:help -Ddetail=true  for outputDirectory:
                     Location where generated html will be created. 
                 -->
                <outputDirectory>${project.build.directory}/findbugs</outputDirectory>

                <xmlOutput>true</xmlOutput>
                <findbugsXmlWithMessages>true</findbugsXmlWithMessages>
                <xmlOutputDirectory>target/findbugs</xmlOutputDirectory>
                <failOnError>false</failOnError>
            </configuration>
        </plugin>
    </plugins>
</build>
Run Code Online (Sandbox Code Playgroud)

findbugs maven

13
推荐指数
1
解决办法
2万
查看次数

是否有任何基于Maven的HTML验证器

我有一个包含许多HTML文件的项目.作为我的Maven构建过程的一部分,我想在这些文件中运行验证器以确保:

  1. 这些文件在语法上是正确的(例如,检查所有开始标记是否具有相应的结束标记)
  2. 这些文件符合编码指南

任何人都可以推荐一个能做到这一点的好验证器吗?

html maven

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

如何根据带注释的参数编写Aspect切入点

我在解决如何创建一个可以在具有特定注释参数的bean上运行的切入点时遇到了一些麻烦.我最终的目标是在处理参数之前验证参数的值,但目前我只需要创建切入点.

请考虑以下注释

@Retention(RetentionPolicy.RUNTIME)
@Target({ ElementType.PARAMETER })
public @interface MyAnnotation {}
Run Code Online (Sandbox Code Playgroud)

然后,我想将其应用于以下方法:

public void method1(@MyAnnotation long i) {}
public void method2(String someThing, @MyAnnotation long i) {}
public void method3(String someThing, @MyAnnotation long i, byte value) {}
Run Code Online (Sandbox Code Playgroud)

所以

  • 我不关心方法所在的类(或包)
  • 注释参数的位置会有所不同.
  • 我知道注释值只适用于特定类型

我的切入点实现需要有以下几点:

@Before(value = "* *(..) && args(verifyMe)")
public void verifyInvestigationId(long verifyMe) {}
Run Code Online (Sandbox Code Playgroud)

我对这个@Before值究竟是什么以及如何将注释及其类型联系起来感到有些困惑.在这一点上,可能不值得列出我尝试过的东西!

更新:基于我在http://stackoverflow.com/questions/3565718/pointcut-matching-methods-with-annotated-parameters/3567170#3567170中看到的建议(纠正了一些误解并增加了我忽略的空间) )我已经到了以下工作的地步:

@Before("execution(public * *(.., @full.path.to.MyAnnotation (*), ..))")
public void beforeMethod(JoinPoint joinPoint) {
    System.out.println("At least one of the parameters are annotated with @MyAnnotation"); …
Run Code Online (Sandbox Code Playgroud)

java spring annotations aspectj

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

在 Java 枚举中使用 Spring 注入

我遇到的情况是,我的应用程序可能处于多种“模式”中的一种。由于这些是离散值,我想使用枚举类型对它们进行建模。

对于每种状态,我的应用程序都需要执行稍微不同的功能,我想使用插件模式对其进行建模。我定义了一个接口并提供了一些实现。

我现在希望我的枚举返回适合其状态的插件。我想做以下事情:

public enum Mode {
  ONE {
    @Override
    public MyType get() { return factory.getFirst(); }
  },
  TWO {
    @Override
    public MyType get() { return factory.getSecond(); }
  };

  @Autowired private MyTypeFactory factory;

  public abstract MyType get();

  // Other methods removed for clarity
}
Run Code Online (Sandbox Code Playgroud)

但这是行不通的。这是因为我使用 spring 注入将插件工厂添加到枚举中(枚举常量是静态的,spring 注入的变量是实例变量,所以我会收到编译错误)

我无法直接从枚举创建 MyType 实例,因为它们需要依赖项注入

我该如何解决这个问题?

java enums spring dependency-injection

4
推荐指数
1
解决办法
5307
查看次数

Maven:如何读取父 POM 版本

背景:我的大部分 Java 项目都有很多样板配置,我最终将这些配置写入我的 POM。(例如 sourceEncoding 总是 UTF-8,组织细节永远不会改变)。为了避免复制粘贴配置块,我创建了自己的标准“父”POM,我可以为我的每个项目扩展。

我也有许多在我从事的每个 Java 项目中使用的工具(例如 checkstyle、PMD 等),因此我已将每个工具的插件添加到我的标准父 pom 中。

PMD(和其他一些工具)有一个有趣的问题——它们需要一组配置文件才能正确运行。由于 Maven 更喜欢使用“每个模块一个可部署资源”的概念,因此我创建了以下(简化的)结构:

<My Template>
  |--- Config Files
  \--- Parent Pom
Run Code Online (Sandbox Code Playgroud)
  • 我的模板:是一个由 Maven 控制的项目,有两个模块
  • 配置文件:是一个 maven 模块,它将 PMD 配置文件捆绑成一个 ZIP 并将它们部署到一个 maven 仓库
  • 父 Pom:是我所有的样板代码。它依赖于“配置文件”,并设置为从 ZIP 中提取配置

到现在为止还挺好....

要求: “父 Pom”和“配置文件”总是一起构建和部署 - 即“父 Pom”版本 1.2.3 只能与“配置文件”版本 1.2.3 一起使用,所以当我在“父 POM”我需要执行以下操作:

<dependency>
    <groupId>org.my-org</groupId>
    <artifactId>config-files</artifactId>
    <version>${project.version}</version>
    <type>zip</type>
    <scope>test</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)

问题:当我开始我的应用程序(假设版本 0.0.1)时,我使用“Parent Pom”作为我的父母。Maven 将计算项目的有效 POM,${project.version} 将被解释为 0.0.1(应用程序版本)而不是 1.2.3(父 POM 版本)。Maven 然后无法找到配置文件。

问题:我如何告诉 Maven “给我 …

java maven-2 maven

4
推荐指数
1
解决办法
6865
查看次数

Java:如何定义实现接口的枚举集合

我想用两个简单的方法创建一个类 - 第一个注册需要处理的类型。第二个将处理所有已注册的类型。我遇到的问题是我想注册/处理的类有一定的限制——它们必须是实现和接口的枚举

我不太清楚如何定义将用于存储注册类型的集合。我的代码的简化版本是:

public class Example {
    interface MyType {
        // Add methods here
    }

    private List<what-goes-here?> store = new ArrayList<>();


    public <T extends Enum<?> & MyType> void registerType(@Nonnull Class<T> type) {
        store.add(type);
    }


    public void processAll() {
        for (T t : store) {         // Where do I define T?
            // process t
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

generics java-8

3
推荐指数
1
解决办法
506
查看次数

Maven拉了一个旧版本的传递依赖

我已经编写了一个依赖于Guava 20.0版(与JDK 1.7兼容的最新版本)的库。

然后,我编写了一个使用该库以及uk.org.lidalia:slf4j-test:1.2.0(具有测试范围)的应用程序。slf4j-test依赖于Guava版本14.0.1。

我的问题是我的应用程序将Guava的两个不同版本视为传递依赖项,并选择了较旧的版本。现在,当我在库中调用某些方法时,出现“类或方法未找到”异常。

我可以(并且已经)将Guava排除为slf4j-test的依赖项,从而暂时解决了该问题,但是如果我引入另一个使用Guava的依赖项,则该问题将返回。

所以我的问题是:为什么Maven会选择较旧版本的依赖项,以及如何始终使它选择最新版本。

java maven

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

Bash变量替换失败.我需要启用开关吗?

以下Bash脚本失败:

DATA=fred
echo ${DATA:1:1}
Run Code Online (Sandbox Code Playgroud)

我希望它打印"r",但我得到的只是一个"坏替换"错误.

是否需要使用某种开关来启用变量扩展语法?

干杯

bash

0
推荐指数
1
解决办法
66
查看次数