我正在研究一个相当大的Maven项目.我们可能有大约70个左右的单个工件,它们大致分为两个共享代码库,也许有十个使用它们的应用程序.所有这些项都存在于命名空间中com.mycompany.*.
大部分时间我们都在针对快照构建运行.因此,为了完整构建应用程序,我可能首先构建库项目,以便将它们安装到我的本地存储库(例如,mycompany-libname-2.4-SNAPSHOT.jar).
问题是,当我然后构建应用程序.出于某种原因,Maven想要检查主要的两个公共存储库(maven-net-repo和java-net-repo)以获取所有mycompany-*-SNAPSHOT.jar工件的更新.当然,它们在那里找不到,所有的东西最终都会回归到我刚刚建立到我本地存储库的版本,但我希望Maven停止这样做,因为(a)它让我感觉像是一个糟糕的net.citizen不断地检查这些存储库以寻找永远不存在的东西,并且(b)它在我的构建过程中添加了一些不必要的和恼人的网络延迟.
我大部分时间都是在离线模式下运行maven来解决这个问题,但这并不理想,因为偶尔会更新对公共库的依赖.所以我正在寻找的是一个解决方案,它将导致Maven不检查来自给定存储库的更新是否符合某些标准的工件 - 在这种情况下,如果Maven忽略SNAPSHOT版本或其中的工件,我会很高兴该com.mycompany命名空间.
我的情况是,一堆文件被检入svn,这是非常讨厌的源代码控制(特别是一个log4j.properties文件),我想从版本控制中删除它们.我已经知道如何在我自己的本地工作副本中从svn版本控件中删除文件,就像在这个问题和这个问题中一样,但这并不是我正在寻找的.
问题是,一旦我删除文件svn rm --keep-local,当每个其他用户从存储库中拉出时,他们的本地副本log4j.properties将消失,他们的环境将崩溃.我想要做的是从存储库中的版本控制中删除该文件,但也使其成为当其他人从存储库中拉出时,就好像他们--keep-local在自己的机器上使用它一样,以便它们的log4j.properties文件的现有副本坚持不懈但变得无法接受.
这甚至可能吗?我怀疑它是svn没有的功能.
我正在涉足clojure,并且在尝试确定与这种常见python成语相当的clojure(和/或Lisp)方面遇到了一些麻烦.
习惯用法是在python模块的底部经常有一些测试代码,然后是运行代码的语句,例如:
# mymodule.py
class MyClass(object):
"""Main logic / code for the library lives here"""
pass
def _runTests():
# Code which tests various aspects of MyClass...
mc = MyClass() # etc...
assert 2 + 2 == 4
if __name__ == '__main__': _runTests()
Run Code Online (Sandbox Code Playgroud)
这对于简单的临时测试很有用.通常会通过写入来使用此模块from mymodule import MyClass,在这种情况下_runTests()永远不会调用,但是在末尾使用代码片段,也可以通过python mymodule.py直接从命令行键入来运行它.
在Clojure(和/或常见的lisp)中是否有相同的习惯用法?我不是在一个完整的单元测试库之后(好吧,我,但不是在这个问题中),我只想在一个模块中包含一些代码,这些代码只能在某些情况下运行,所以我可以拥有一种快速运行代码的方法我一直在努力,但仍允许我的文件像普通模块/命名空间一样导入.
我意识到宏俱乐部的第一条规则是不要使用宏,所以下面的问题更多的是作为学习Clojure的练习而不是其他任何东西(我意识到这不一定是宏的最佳用法).
我想编写一个简单的宏,它充当常规(defn)宏的包装器,并最终向定义的函数添加一些元数据.所以我想要这样的东西:
(defn-plus f [x] (inc x))
Run Code Online (Sandbox Code Playgroud)
......扩展到这样的东西:
(defn #^{:special-metadata :fixed-value} f [x] (inc x))
Run Code Online (Sandbox Code Playgroud)
原则上这对我来说似乎并不难,但是我无法[args]确定正确解析定义函数中的其他形式的具体细节.
作为奖励,如果可能的话,我希望宏能够处理所有不同形式的defn(即,有或没有docstrings,多个arity定义等).我在clojure-contrib/def包中看到了一些看起来可能有用的东西,但是很难找到使用它们的示例代码.
我在Android上使用HttpClient连接到https://someUrl.com/somePath.问题是网站的证书是针对*.someUrl.com而不是someUrl.com的,所以我得到了一个SSLException.网站上有跛脚,是的,但除非我能解决这个问题,否则我会陷入困境.有没有办法让HttpClient放松并接受证书?
我正在考虑将一个非常简单的文本模板库移植到scala,主要是作为学习语言的练习.该库目前在Python和Javascript中实现,其基本操作或多或少归结为此(在python中):
template = CompiledTemplate('Text {spam} blah {eggs[1]}')
data = { 'spam': 1, 'eggs': [ 'first', 'second', { 'key': 'value' }, true ] }
output = template.render(data)
Run Code Online (Sandbox Code Playgroud)
在Scala中这一点都不是非常难以做到的,但我不清楚的是如何最好地表达data参数的静态类型.
基本上这个参数应该能够包含你在JSON中找到的各种东西:一些基元(字符串,整数,布尔值,空),零个或多个项目的列表,或者零个或多个项目的映射.(出于这个问题的目的,地图可以被限制为具有字符串键,这似乎是Scala喜欢的东西.)
我最初的想法只是使用a Map[string, Any]作为顶级对象,但这对我来说似乎并不完全正确.实际上我不想在那里添加任何类的任意对象; 我只想要上面提到的元素.与此同时,我认为在Java中我能得到的最接近的是Map<String, ?>,而且我知道Scala的一位作者设计了Java的泛型.
我特别好奇的一件事是具有相似类型系统的其他功能语言如何处理这类问题.我有一种感觉,我真正想要做的是提出一组我可以模式匹配的案例类,但我不太能想象它会是什么样子.
我有Scala编程,但说实话,我的眼睛开始对协方差/逆变器的东西上釉一点,我希望有人可以更清楚,更简洁地向我解释这一点.