小编Tal*_* G.的帖子

Intellij多模块maven项目,其中一个子模块中的更新不会传播到战争

我正在使用Intellij Idea 12并拥有一个多模块maven项目.

为了简单起见,我们假设我有:

  • 模块A - 编译为JAR
  • 模块B - 取决于模块A,也编译为JAR
  • 模块C - 取决于模块B,但编译为WAR

我知道Intellij有自己的maven项目构建机制,所以当我第一次构建WAR并将其部署到Tomcat时,通常都可以正常工作.当您需要在其中一个子模块中进行更改时,问题就开始了,例如模块A并重建战争(重建模块C)

Intellij似乎使用之前构建的旧模块A jar,并忽略我在创建/构建模块C时在模块A中所做的任何更改.

我发现解决这个问题的唯一方法是在模块A和B上运行Maven构建,并使用Maven初始构建WAR并将其部署为外部源.

问题是我要部署10个WAR,以及编译为jar的20个子模块.当我只想看到我在一个影响一个WAR的子模块中所做的更改时,重建所有战争是没有意义的.在支付Intellij Ultimate许可证时,使用命令行在外部构建它们是没有意义的(因此我可以使用应用程序服务器)

现在将此行为与其他IDE进行比较1. Netbeans通过Maven自然地与maven项目一起工作,所有构建/部署都是通过Maven完成的,而不是通过某种内部机制完成的.2. Eclipse使用它的内部机制做同样的事情,但是在重建WAR项目时会更新所有JAR.(或其他一些有用的魔法)

是否有一种与IDEA不同的方式或者没有?

scala jar war intellij-idea maven

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

无法在Linux上获得NetworkInterface.getNetworkInterfaces的所有网络接口

我需要打印机器的所有mac地址.建议的方法是使用NetworkInterface.getNetworkInterfaces()并迭代返回的枚举.但是,当某些设备关闭时(NO Ip已配置),则上述方法将不会返回接口.

运行"ip addr"将返回以下内容

  1. lo:mtu 16436 qdisc noqueue link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8范围主机lo inet6 :: 1/128范围主机valid_lft永远是preferred_lft永远
  2. G2:mtu 1500 qdisc pfifo_fast qlen 1000 link/ether 00:03:b2:75:99:c2 brd ff:ff:ff:ff:ff:ff
  3. G1:mtu 1500 qdisc pfifo_fast qlen 1000 link/ether 00:03:b2:75:99:c3 brd ff:ff:ff:ff:ff:ff inet 10.205.191.123/16 brd 10.205.255.255 scope global G1 inet6 fe80: :203:b2ff:fe75:99c3/64范围链接valid_lft永远preferred_lft永远
  4. eth2:mtu 1500 qdisc noop qlen 1000 link/ether 00:03:b2:75:99:c4 brd ff:ff:ff:ff:ff:ff
  5. eth3:mtu 1500 qdisc noop qlen 1000 link/ether 00:03:b2:75:99:c5 brd ff:ff:ff:ff:ff:ff

但是,当我运行Java代码(即使是root或具有网络权限)时,我只获得了环回和G1接口.

这是我为测试目的编写的代码:

Enumeration<NetworkInterface> ni = NetworkInterface.getNetworkInterfaces();
while(ni.hasMoreElements()){
NetworkInterface nextElement = ni.nextElement();
byte[] mac …
Run Code Online (Sandbox Code Playgroud)

java linux networking

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

有没有办法将scala值视为java中的常量

我想在我的Scala代码中定义一个值,并在我的Java代码(调用scala)中将此值视为常量(在注释中使用).

例如:

object MyValues {
   val a = 5
}
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试在Java注释中使用此值时,它会给出一个错误: java:属性值必须是常量

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface MyJavaAnnotation {
   int aValue() default MyValues.a(); // <-- Error
}
Run Code Online (Sandbox Code Playgroud)

像这样调用它也不起作用: MyValues$.MODULE$.a();

我还尝试使用final关键字为val添加前缀而没有成功.

这有解决方法吗?

java scala constants

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

scala使用泛型方法覆盖特征

我有3个班:

class AClass 
class Base { val a = "a" }
class BaseOne extends Base { val b = "b" }
class BaseTwo extends Base { val c = "c" }
Run Code Online (Sandbox Code Playgroud)

我想扩展一个包含泛型方法的特征,我不允许改变特征

trait Converter {
    def toAClass[T <: Base](e: T): AClass
    def fromAClass[T <: Base](s: AClass): T
}
Run Code Online (Sandbox Code Playgroud)

我想在几个不同的对象中扩展它

 object ConverterBaseOne extends Converter { 
 // ERROR
     override def toAClass(e: BaseOne) : AClass = { printf(e.b) } // b is known
     override def fromAlcass(a: AClass) : BaseTwo = {....}
 } …
Run Code Online (Sandbox Code Playgroud)

generics scala type-safety

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

标签 统计

scala ×3

java ×2

constants ×1

generics ×1

intellij-idea ×1

jar ×1

linux ×1

maven ×1

networking ×1

type-safety ×1

war ×1