我正在使用Intellij Idea 12并拥有一个多模块maven项目.
为了简单起见,我们假设我有:
我知道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不同的方式或者没有?
我需要打印机器的所有mac地址.建议的方法是使用NetworkInterface.getNetworkInterfaces()并迭代返回的枚举.但是,当某些设备关闭时(NO Ip已配置),则上述方法将不会返回接口.
这是我为测试目的编写的代码:
Enumeration<NetworkInterface> ni = NetworkInterface.getNetworkInterfaces();
while(ni.hasMoreElements()){
NetworkInterface nextElement = ni.nextElement();
byte[] mac …Run Code Online (Sandbox Code Playgroud) 我想在我的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添加前缀而没有成功.
这有解决方法吗?
我有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) scala ×3
java ×2
constants ×1
generics ×1
jar ×1
linux ×1
maven ×1
networking ×1
type-safety ×1
war ×1