使用leiningen REPL时,有没有办法让文件或ns自动重新加载到repl on file save.目前我通过在repl中键入以下内容来重新加载ns - (use 'sample.ns :reload-all)
.
但是我可以在文件保存时自动重新加载吗?
我目前正致力于优化多模块maven项目的maven构建.该项目由大约90个Maven模块组成.通常,有一些交叉的库构成了核心,然后大约有15个"应用程序模块"组成了整个应用程序(然后在WAR中部署)
现在一般情况下整个项目都有一个主要版本"2.5",因此当一个新的主要版本完成时,所有"应用程序模块"都具有相同的版本"2.5.0".到现在为止还挺好.
如果模块有需要修复或需要改进的错误,则应该发布该"应用程序模块"的新版本.因此,例如模块A修复了一个错误,然后A.jar应该是版本"2.5.1",而其余应该仍然是"2.5.0".
父(2.5.0-SNAPSHOT - 模块A(2.5.1-SNAPSHOT) - 模块B(2.5.0-SNAPSHOT) - 模块C(2.5.2-SNAPSHOT) - 战争(2.5.3-SNAPSHOT)< - 3最后,因为C有两个重新发布和一个,并且为了简单起见,在每个模块发布后发布.
我们决定在主pom中管理工件版本,因此我们不需要在释放一个模块后更新每个工件的依赖版本.
所以现在每当更新的"应用程序模块"准备就绪时,我们使用maven发布插件来执行该模块的发布(我们正在发布一个模块,而不是整个项目).因此,假设我们在版本2.5.4中发布模块A,导致A.jar被部署为版本2.5.4,并通过将模块代码更新为2.5.5-SNAPSHOT完成.
完成此操作后,我们需要更新主pom中的版本,以便所有模块继续引用正确的版本.
感谢主pom的dependencyManagement部分,如果我构建War模块,它会自动获取模块A的新版本.
现在是棘手的部分:一旦发布所有模块,就应该发布新版本的Web应用程序.这应该包含所有未更改的模块以及刚刚发布的模块.我目前正在努力如何做到这一点.如果我依赖父poms版本,该版本将包含SNAPSHOT版本(所有版本增量太高),我和发布插件不允许.
这种困境的最佳解决方案是什么?
我有一个想法是将依赖关系管理外包给一个单独的pom,然后使用"import"范围将其导入到主poms dependencyManagement中.
这种szenario是一个愚蠢的想法吗?是否有开发和维护这样的大型多模块应用程序的替代方案?简单地使用整个项目中的发布插件使所有版本同步并不是一个选项,因为应用程序很大并且客户端应用程序必须加载更新的模块版本.我们的一些客户的连接速度非常慢,因此每次推出所有模块都会让他们感到非常不满.
非常感谢,
克里斯
release release-management pom.xml maven maven-release-plugin
是否有工具在clojure中运行代码约定测试?例如,确保函数名称没有任何大写字母或关键字中没有任何下划线.
Maven 2使用项目的标准目录布局,在此处记录:
http://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html
我想知道的是:除了普通的Java库,Java EE和WebApp项目之外,是否有推荐的其他项目约定?具体来说,放置ant文件的位置,启动脚本,配置文件,示例应用程序等.
另外,将文件放在src /目录树之外的惯例是什么?例如,将文档放在doc /(作为src的兄弟)下是否常见?
是否有编译这些约定的页面?如果没有,其他读者可以提供自己项目的例子吗?
我想在不使用reverse
函数的情况下反转Clojure中的序列,并以递归方式执行此操作.
这是我想出的:
(defn reverse-recursively [coll]
(loop [r (rest coll)
acc (conj () (first coll))]
(if (= (count r) 0)
acc
(recur (rest r) (conj acc (first r))))))
Run Code Online (Sandbox Code Playgroud)
样本输出:
user> (reverse-recursively '(1 2 3 4 5 6))
(6 5 4 3 2 1)
user> (reverse-recursively [1 2 3 4 5 6])
(6 5 4 3 2 1)
user> (reverse-recursively {:a 1 :b 2 :c 3})
([:c 3] [:b 2] [:a 1])
Run Code Online (Sandbox Code Playgroud)
问题:
参考文献:
http://groups.google.com/group/clojure/browse_thread/thread/4e7a4bfb0d71a508?pli=1
我正在为各种项目切换不同的Java SDK(1.4.2,1.5.0和1.6.0).我想在我的Windows XP机器上设置JAVA_HOME环境变量,而无需通过繁琐的我的电脑 - >高级 - > [选择系统变量] - >编辑 - >确定 - >确定
是否可以从命令行执行此操作,或者是否有可以执行此操作的实用程序?
(请注意,我不是指标准批处理文件"SET"命令 - 我想要"全局"设置环境变量,而不仅仅是控制台窗口的生命周期).
我正在调试遗留Java应用程序,并且线程转储(通过获取jstack
)包含一些如下所示的条目:
"Thread-8" prio=10 tid=0x0000000055f2c800 nid=0x49bf runnable [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
Run Code Online (Sandbox Code Playgroud)
而已.没有堆栈跟踪.
这里发生了什么?如何找到在此线程中执行的Java代码?
我有一个在Linux上运行的Java应用程序提供的Thrift API.我正在使用.NET客户端连接到API并执行操作.
对服务的前几次调用工作没有错误,但随后(看似随机)一个电话将"挂起".如果我强行退出我的客户端并尝试重新连接,该服务会再次挂起,或者我的客户端出现以下错误:
Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host.
at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)
at Thrift.Transport.TStreamTransport.Read(Byte[] buf, Int32 off, Int32 len)
(etc.)
Run Code Online (Sandbox Code Playgroud)
当我使用JConsole获取线程转储时,服务器已启用 accept()
"Thread-1" prio=10 tid=0x00002aaad457a800 nid=0x79c7 runnable [0x00000000434af000]
java.lang.Thread.State: RUNNABLE
at java.net.PlainSocketImpl.socketAccept(Native Method)
at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:408)
- locked <0x00000005c0fef470> (a java.net.SocksSocketImpl)
at java.net.ServerSocket.implAccept(ServerSocket.java:462)
at java.net.ServerSocket.accept(ServerSocket.java:430)
at org.apache.thrift.transport.TServerSocket.acceptImpl(TServerSocket.java:113)
at org.apache.thrift.transport.TServerSocket.acceptImpl(TServerSocket.java:35)
at org.apache.thrift.transport.TServerTransport.accept(TServerTransport.java:31)
at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:63)
Run Code Online (Sandbox Code Playgroud)
netstat
在服务器上显示连接到服务端口,在TIME_WAIT
强制退出客户端几分钟后,服务端口最终消失(正如预期的那样).
设置Thrift服务的代码如下:
int port = thriftServicePort;
String host = …
Run Code Online (Sandbox Code Playgroud) 观察以下repl会话:
user=> (set! *warn-on-reflection* true)
true
user=> (defn blah [s] (for [c s] (if (Character/isDigit c) true false)))
Reflection warning, NO_SOURCE_PATH:1:31 - call to isDigit can't be resolved.
Reflection warning, NO_SOURCE_PATH:1:31 - call to isDigit can't be resolved.
#'user/blah
user=> (blah "abc123abc")
(false false false true true true false false false)
user=> (defn blah [s] (for [^char c s] (if (Character/isDigit c) true false)))
#'user/blah
user=> (blah "abc123abc")
(false false false true true true false false false)
Run Code Online (Sandbox Code Playgroud)
所以我们使用了一种类型的提示^char
来摆脱反射 …
我正在尝试根据本指南自定义我的vim弹出窗口完成菜单: Vim Wiki:"Omni完成弹出菜单".它指出
如果您总是想要这个选择,请添加到您的vimrc.
但是,我的.vimrc文件中有以下设置
colo desert
filetype plugin on
set ofu=syntaxcomplete#Complete
highlight Pmenu guibg=brown gui=bold
Run Code Online (Sandbox Code Playgroud)
我得到以下内容:
注意:当我手动手动输入突出显示命令时,它可以工作:
如何让弹出窗口使用.vimrc中定义的颜色方案,而不必每次都手动输入?