小编Ada*_*ent的帖子

Maven + Mercurial + Site Deploy问题

我正在尝试使用mercurial将我的Maven生成的站点部署到googlecode项目.当我做的时候

mvn site:deploy
Run Code Online (Sandbox Code Playgroud)

我收到转移错误:org.apache.maven.scm.NoSuchCommandScmException:没有这样的命令'list'.

就像它试图做一个"svn列表",即使我使用的是mercurial.

在我的pom我有maven旅行车和mercurial设置(我认为正确):

org.apache.maven.wagon wagon-scm 1.0-beta-6 org.apache.maven.scm maven-scm-provider-hg 1.4

然后,对于我的站点部署,我有一个单独的mercurial存储库:

   <distributionManagement>
  <site>
   <id>googlecode</id>
   <name>googlecode site</name>
   <url>scm:hg:${project.site.scm}/</url>
  </site>
   </distributionManagement>
Run Code Online (Sandbox Code Playgroud)

在我的settings.xml中,我有:

  <servers>
  <server>
    <id>googlecode</id>
    <username>...</username>
    <password>...</password>
  </server>
  </servers>
Run Code Online (Sandbox Code Playgroud)

mercurial maven-2 google-code

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

通过AspectJ了解调用者类

我试图模仿Spring的AspectJ @Async支持但是使用消息总线.

问题是我需要知道我的消息总线(RabbitMQ MessageListener)是调用方法还是正常(所有其他)调用方,方法将立即返回.

我的注释称为@MQAsync而不是Springs @Async.

package com.snaphop.mqueue;

import org.apache.log4j.Logger;
import com.snaphop.mqueue.MQAsync;

public aspect MQAsyncAspect {

    //pointcut asyncTypeMarkedMethod() : execution(@MQAsync void *(..));
    pointcut asyncTypeMarkedMethod() : call(@MQAsync void *(..));

    private static final Logger log = Logger.getLogger("MQAsync");

    Object around() : asyncTypeMarkedMethod() {     
        if (listenerIsCaller) {
            return proceed();
        }
        //Send the method parameters to the message bus.
        //this logic isn't here for brevity.
        return null;
    }
}
Run Code Online (Sandbox Code Playgroud)

呼叫切入点会让我呼叫者上下文,但是这是行不通的,因为我将调用通过反射我的消息监听器的方法.在执行切入点(注释掉)不会告诉我,谁是调用方法.

有没有办法通过某种堆栈转储分析来确定调用者类?

java spring aspectj

4
推荐指数
2
解决办法
4562
查看次数

保持maven部署插件免于部署测试失败

maven-release-plugin如果有单元测试失败,我很长时间不会发布(也就是将jar部署到maven repo).

出于各种原因,我想只使用maven部署插件,但显然即使在测试失败的情况下仍会部署maven-surefire-plugin.

因此而不仅仅是

mvn clean deploy
Run Code Online (Sandbox Code Playgroud)

我必须设置我的CI与(shell)做两步:

mvn clean test && mvn deploy -DskipTests=true
Run Code Online (Sandbox Code Playgroud)

我已经确定肯定没有设置忽略失败.理想情况下,我不想运行两个单独的进程.

当然,测试失败的部署不能是默认的吗?我错过了什么吗?

编辑它似乎是詹金斯问题..无法重现

我不确定Jenkins为什么或如何强制maven构建继续测试失败(我假设这是用于报告)但它没有显示任何传递给它的选项以继续.它似乎只发生在詹金斯说"模块改变,重新计算依赖图"时.

maven maven-deploy-plugin jenkins maven-surefire-plugin

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

用于覆盖参数的AspectJ声明语法是什么

之前已经使用注释语法对此进行了回答:Aspectj覆盖方法的参数

但我无法弄清楚如何使用AspectJ声明语法来实现它.以下应该在方法中的每个字符串前添加"Poop",但事实并非如此.

public aspect UserInputSanitizerAdvisor {

    pointcut unSafeString() : execution(@RequestMapping * * (..));

    Object around() : unSafeString() {
        //thisJoinPoint.getArgs();
        //proceed();
        System.out.println("I'm Around");
        Object[] args = thisJoinPoint.getArgs();
        if (args != null) {
            for (int i = 0; i < args.length; i++) {
                Object o = args[i];
                if (o != null && o instanceof String) {
                    String s = (String) o;
                    args[i] = "poop: " + s;
                }
            }
        }

        return proceed();
    }

}
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚如何给出"proceed()"所有的论点.

java aspectj

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

Java使用正确的unicode字符将ISO-8859-1转换为UTF-8

我有一些ISO-8859-1文本,我试图转换为UTF-8但最终得到一些未正确映射的字符.我一直在使用过多的标准内置Java字符集转换,它们基于Charset.decode和内置的CharsetDecoder.

这导致两个问题:

  • 我有一些在ISO中看起来很好的字符,但是因为我输出的是UTF-8,就像大多数java应用程序一样.
  • 即使设置为UTF-8,我也无法插入MySQL

对于MySQL,我得到了异常(参见上面的链接):

引起:java.sql.SQLException:字符串值不正确:'\ xC2\x9Esk\xC3\xA9 ...'为第1行的列'b'

是否有比内置的Java iconv或更好的字符解码器/映射器?

java mysql unicode utf-8

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

在Java中,似乎公共构造函数总是一个糟糕的编码实践

可能重复:
考虑提供静态工厂方法而不是构造函数

这可能是一个有争议的问题,可能不适合这个论坛(所以如果你选择关闭这个问题,我不会被侮辱).

看来Java的当前功能似乎没有理由构建构造器public...... 永远.友情,private,protected是确定的,但public没有.

似乎提供public static创建对象的方法几乎总是更好的主意.每个Java Bean序列化技术(JAXB,Jackson,Spring等......)都可以调用受保护或私有的无参数构造函数.

我的问题是:

  • 我从来没有见过这种做法在任何地方下令或写下来?也许布洛赫提到它,但我不拥有的是书.
  • 是否有一个用例除了可能不是超级DRY我错过了?

编辑:我解释为什么静态方法更好.

0.1.对于一个你得到更好的类型推断.例如,请参阅Guava的http://code.google.com/p/guava-libraries/wiki/CollectionUtilitiesExplained

0.2.作为该类的设计者,您可以稍后使用静态方法更改返回的内容.

0.3.处理构造函数继承很痛苦,特别是如果你必须预先计算某些东西.0.4.更多理由:https://stackoverflow.com/a/3852556/318174

我应该发布这是针对公共API的代码.我经常违反各种规则(比如使用直接现场访问)进行单元测试,方便,因为我很懒.因此,当我的意思,我的意思是你把它释放到野外.

java coding-style

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

为什么Erlang的进口产品具有优势?

我找到了Erlang的模块arity import /n,其中n是参数的数量而不是奇怪的.

在Java和其他各种语言中,您可以执行以下操作:

import static com.stuff.Blah.myFunction;
Run Code Online (Sandbox Code Playgroud)

Blay.myFunction(..)无论参数如何,都将导入所有重载.

此外,我想明确为什么语言设计师认为这是一个好主意(我不是试图批评语言......只是好奇)?

  • 它与代码交换有关吗?
  • 或者它是否与隐藏保护方法的递归有关?如果是这样的话,为什么不允许arity出口但不需要进口arity?
  • 我为什么要这么明确?那是导入两个参数函数而不是三个参数myFunction

erlang

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