小编Mik*_*aig的帖子

Maven exec:多模块项目的java目标

我试图运行exec-maven-pluginexec:java一个简单的两模块项目的目标,其中一个模块依赖于其他.到目前为止,我找不到有效的配置.这是一个简化的测试用例:

  • EXEC-多模块检验/
    • 的pom.xml
    • 模块1 /
      • 的pom.xml
      • SRC /
        • 主要/
          • 的Java /
            • HelloPrinter.java
    • 模块2 /
      • 的pom.xml
      • SRC /
        • 主要/
          • 的Java /
            • MyMain.java

这是父母pom:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.mkscrg.sandbox</groupId>
    <artifactId>exec-multi-module-test</artifactId>
    <version>1.0</version>
    <packaging>pom</packaging>

    <modules>
        <module>module1</module>
        <module>module2</module>
    </modules>

    <build>
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>exec-maven-plugin</artifactId>
                <version>1.2.1</version>
            </plugin>
        </plugins>
    </build>
</project>
Run Code Online (Sandbox Code Playgroud)

module1的pom:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <artifactId>exec-multi-module-test</artifactId>
        <groupId>com.mkscrg.sandbox</groupId>
        <version>1.0</version>
    </parent>

    <artifactId>module1</artifactId>
</project>
Run Code Online (Sandbox Code Playgroud)

module2的pom:http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0

    <parent>
        <artifactId>exec-multi-module-test</artifactId>
        <groupId>com.mkscrg.sandbox</groupId>
        <version>1.0</version>
    </parent>

    <artifactId>module2</artifactId> …
Run Code Online (Sandbox Code Playgroud)

java maven exec-maven-plugin

38
推荐指数
3
解决办法
2万
查看次数

为什么这个通用代码会产生NoSuchMethodError?

假设你有一个方法

  • 采取阈值和输入
  • 如果输入小于阈值,则引发异常
  • 否则返回输入

它看起来像这样:

<N extends Number & Comparable<N>, S extends N> S ensureLessThan(N threshold, S input) {
    if (input.compareTo(threshold) >= 0) {
        throw new IllegalArgumentException("Input " + input + " is not less than " + threshold);
    }
    return input;
}
Run Code Online (Sandbox Code Playgroud)

运行时,此方法抛出NoSuchMethodError:

Exception in thread "main" java.lang.NoSuchMethodError: java.lang.Number.compareTo(Ljava/lang/Object;)I
Run Code Online (Sandbox Code Playgroud)

添加看起来像冗余演员的东西使它工作:

...
    if (((N) input).compareTo(threshold) >= 0) {
...
Run Code Online (Sandbox Code Playgroud)

那么这里发生了什么?

更新:我的Java版本是

java version "1.6.0_37"
Java(TM) SE Runtime Environment (build 1.6.0_37-b06-434-11M3909)
Java HotSpot(TM) 64-Bit Server VM (build 20.12-b01-434, mixed …
Run Code Online (Sandbox Code Playgroud)

java generics polymorphism

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

Python例外:EAFP和什么是真正的例外?

在一些地方(这里这里)已经说过,Python强调"请求宽恕而不是许可"(EAFP)应该通过以下观点来缓和,即异常只应在真正特殊情况下调用.考虑以下内容,我们将弹出并推送优先级队列,直到只剩下一个元素:

import heapq
...
pq = a_list[:]
heapq.heapify(pq)
while True:
    min1 = heapq.heappop(pq)
    try:
        min2 = heapq.heappop(pq)
    except IndexError:
        break
    else
        heapq.heappush(pq, min1 + min2)
# do something with min1
Run Code Online (Sandbox Code Playgroud)

异常仅在len(a_list)循环的迭代中引发一次,但它并不是特别的,因为我们知道它最终会发生.这个设置使我们a_list无需检查是否空了很多次,但(可能)它比使用显式条件更不易读.

对这种非特殊程序逻辑使用异常的共识是什么?

python exception

15
推荐指数
3
解决办法
2302
查看次数

在枚举器中编写枚举

免责声明:最近在haskell-cafe列表上询问了这个问题.我向任何被双重打扰的人道歉.

所有iteratee-实现包,我知道的(例如iteratee,iterIOconduit)定义一个enumeratee组合物功能,除了enumerator包.在我看来,这似乎是一个严重的限制,但它实现起来似乎相对简单:

import Data.Enumerator
import Data.Enumerator.Internal

(=$=) :: Monad m
      => Enumeratee a0 a1 m (Step a2 m b) -> Enumeratee a1 a2 m b
      -> Enumeratee a0 a2 m b
(=$=) e01 e12 step = Iteratee $ do
    step' <- runIteratee $ e12 step
    runIteratee . joinI $ e01 step'
Run Code Online (Sandbox Code Playgroud)

这里有一些我想念的东西吗?或者其他一些enumerator不定义枚举组成的原因?

haskell enumerator

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

Python风格:if语句与布尔评估

Python设计理念的一个想法是"应该有一个......明显的方法来实现它".(PEP 20),但这并非总是如此.我特别指的是(简单)if语句与布尔评估.考虑以下:

if words:
    self.words = words
else:
    self.words = {}
Run Code Online (Sandbox Code Playgroud)

self.words = words or {}
Run Code Online (Sandbox Code Playgroud)

在这样一个简单的情况下,从风格上说,这是更可取的吗?对于更复杂的情况,可以选择if语句以获得可读性,对吧?

python if-statement coding-style

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

Sinatra会议没有像预期的那样坚持

我正在尝试在Sinatra中使用重定向和会话来传递网站上的一些数据.这是一个简化的例子,使用PrettyPrint进行调试:

require 'pp'

require 'rubygems'
require 'sinatra'

enable :sessions

get '/' do
  session[:foo] = '12345'

  puts 'session1'
  pp session

  redirect to('/redir')
end

get '/redir' do
  puts 'session2'
  pp session
  'hello world'
end
Run Code Online (Sandbox Code Playgroud)

看看Thin的输出,我看到:

>> Listening on 0.0.0.0:4567, CTRL+C to stop
session1
{"session_id"=>
  "ea587d8afdcb2ada64f9b17cdd1fbae7b192dee5dfc2999ff9d323f1528f6a0f",
 "foo"=>"12345"}
127.0.0.1 - - [19/Jul/2011 10:33:24] "GET / HTTP/1.1" 302 - 0.0042
session2
{}
127.0.0.1 - - [19/Jul/2011 10:33:24] "GET /redir HTTP/1.1" 200 11 0.0004
Run Code Online (Sandbox Code Playgroud)

我在文档中看到的一切都表明这应该可以正常工作.实际上,/redir即使我直接请求会话数据,我也永远不会得到任何会话数据,并且会话会在后续请求中保持不变/.

思考?

ruby session redirect thin sinatra

6
推荐指数
2
解决办法
4521
查看次数

如何使浏览器显示对静态站点的更改

所以我有一个简单的静态网站,我定期更新.(这是一个用Jekyll构建的博客.)问题是浏览器*似乎正在缓存页面并隐藏返回查看器的更新.

一个显而易见的选择是做一些像这样的地方更新主要发生在着陆页.除了我不一定反对缓存; 我只是想确保服务器上的新版本取代缓存版本.关于如何实现这一点的想法?

*我只在Chrome上直接观察到这一点,但我想其他浏览器存在同样的问题.

html browser caching

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

可以在编译时操作JVM字节码吗?

是否可以在编译时使用像ASM这样的字节码操作库?

具体来说,我想使用Java的注释处理API在带注释的类上实现样板重的方法.实现注释处理器很简单,但运行时似乎.class文件尚不存在Processor.还有另外一种方法吗?

java bytecode compilation java-bytecode-asm

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

如何在Go包之间共享测试接口?

Go 不会在不同包的测试文件之间共享代码,因此测试接口的定义不会自动重用。在实践中我们如何解决这个问题?

使用示例testing/quick

foo/foo.go

package foo

type Thing int

const (
  X Thing = iota
  Y
  Z
)
Run Code Online (Sandbox Code Playgroud)

bar/bar.go

package bar

import (
  "foo"
)

type Box struct {
  Thing foo.Thing
}
Run Code Online (Sandbox Code Playgroud)

我们想要测试属性foo,所以我们testing/quick.Generate定义Thing

foo_test.go

package foo

import (
  "math/rand"
  "reflect"
  "testing"
  "testing/quick"
  "time"
)

func (_ Thing) Generate(r *rand.Rand, sz int) reflect.Value {
  return reflect.ValueOf(Thing(r.Intn(3)))
}

func TestGenThing(t *testing.T) {
  r := rand.New(rand.NewSource(time.Now().UTC().UnixNano()))
  for i := 0; i < …
Run Code Online (Sandbox Code Playgroud)

testing go quickcheck property-testing

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