我们有一个大型(> 500,000 LOC)Java系统,它依赖于40-50个OSS包.系统使用Ant构建,目前手动处理依赖关系管理.我正在调查Ivy和/或Maven以自动化依赖关系.去年我们将Maven看作是一个构建自动化系统并拒绝它,因为它需要完全重构我们的系统以匹配Maven的架构.现在我正在寻求自动化依赖管理任务.
我已经对常春藤进行了一些实验,但遇到了问题.例如,当我将ActiveMQ指定为依赖项,并告诉Ivy使用Maven存储库中的POM进行依赖项规范时,Ivy检索了一堆我知道不需要的包(例如Jetty,Derby和Geronimo)使用ActiveMQ.
如果我在ivysettings.xml中设置usepoms ="false",它只获取activemq.jar,但这似乎打败了Ivy的目的,并将其降级为具有手动构建的依赖规范的简单jar-fetcher.
这里有一个更大的问题,在Windows中曾经被称为"DLL Hell".在某些情况下,两个直接的第一级依赖项将指向相同传递依赖项的不同版本(例如log4j.jar).只有一个log4j.jar可以在类路径中,因此依赖性解析涉及手动确定哪个版本与我们系统中的所有客户端兼容.
我想这一切都归结为每个包的依赖规范(POM)的质量.在ActiveMQ的情况下,没有范围声明,因此任何对ActiveMQ的引用都将下载其所有依赖项,除非我们手动排除我们不知道的那些依赖项.
在log4j的情况下,自动依赖性解析将要求所有log4j的客户端(依赖于log4j的其他包)对所有先前版本的log4j进行验证,并在POM中提供兼容的log4j版本的范围(或列表).这可能太多了.
这是目前的状况,还是我错过了什么?
将大型(> 1GB)XML文件转储到MySQL数据库的最快方法是什么?
有问题的数据是StackOverflow知识共享数据转储.
这将用于我正在构建的离线StackOverflow查看器,因为我希望在我无法访问互联网的地方进行一些学习/编码.
我希望在项目完成后将其发布到StackOverflow成员的其余部分以供自己使用.
最初,我一次读取XML /写入DB一条记录.这需要大约10个小时才能在我的机器上运行.我正在使用的hacktastic代码现在将500条记录抛出到一个数组中,然后创建一个插入查询以一次加载所有500条(例如" INSERT INTO posts VALUES (...), (...), (...) ... ;").虽然速度更快,但仍需要数小时才能运行.显然这不是最好的方法,所以我希望这个网站上的大脑会知道更好的方法.
LOAD XML INFILE filename.xml"之类的功能在此项目中不可用,因为此功能仅在MySQL 5.4及更高版本中可用.这种约束很大程度上是因为我希望该项目对我以外的人有用,而且我宁愿不强迫人们使用Beta版本的MySQL.MySql.Data命名空间中的任何内容都是可以接受的.感谢您提供的任何指示!
到目前为止的想法
将整个XML文件加载到列中的存储过程,然后使用XPath对其进行解析
我已经看到很多应用程序在uinavigationbar上有一个信息按钮(字母"i",周围有一个圆圈).如何添加此类按钮?
我在使用基于Windows Mobile 5.0模拟器的基本方案时遇到了很多麻烦.我有一个winforms应用程序,最终调用本机代码.部署工作正常,所有本机DLL都复制到winforms .exe相同的文件夹中.我还验证了远程文件查看器工具的情况.
但是,当我启动我的应用程序时,它始终失败并显示"无法找到PInvoke dll - System.MissingMethodException"错误(当调用本机代码时,DllImport属性将变为无用).我知道本机dll与可执行文件位于同一文件夹中.我还应该做些什么?
我正在使用VS 2008.
我在MySQL中使用了一个存储过程,带有CASE语句.
在CASE的ELSE子句中(相当于默认值:)我想选择并返回一个空结果集,从而避免因不处理ELSE情况而抛出SQL错误,而是返回一个空结果集,就好像一个常规查询一样本来没有返回任何行.
到目前为止,我已经设法使用类似的东西:
Select NULL From users Where False
但是我必须命名一个现有的表,比如本例中的"users".它可以工作,但我更喜欢一种更优雅的方式,如果最终重命名或删除所使用的表名,它不会中断.
我试过Select NULL Where False但它不起作用.
使用Select NULL不返回空集,但是一行具有名为NULL且具有NULL值的列.
如何从asp经典中返回特定的http状态代码?
我读到有些版本的IE6已经知道gzip压缩的问题,但我找不到这些问题的解释.gzip压缩和IE6有哪些已知问题?
所以我有一个UITextView,我用它来允许用户提交一些文本.
我的问题是,我似乎无法弄清楚如何通过点击UITextView来允许用户"取消".
好的,我希望整个社区能够帮助我们解决一段时间以来一直在进行的工作场所辩论.这与定义接受或返回某种类型列表的接口有关.有几种方法可以做到这一点:
public interface Foo
{
Bar[] Bars { get; }
IEnumerable<Bar> Bars { get; }
ICollection<Bar> Bars { get; }
IList<Bar> Bars { get; }
}
Run Code Online (Sandbox Code Playgroud)
我自己的偏好是使用IEnumerable作为返回值的参数和数组:
public interface Foo
{
void Do(IEnumerable<Bar> bars);
Bar[] Bars { get; }
}
Run Code Online (Sandbox Code Playgroud)
我对这种方法的论点是,实现类可以直接从IEnumerable创建一个List,并简单地使用List.ToArray()返回它.但是有些人认为应该返回IList而不是数组.我在这里遇到的问题是,现在你需要再次使用ReadOnlyCollection复制它,然后再返回.返回IEnumerable的选项对于客户端代码来说似乎很麻烦?
你喜欢/喜欢什么?(特别是关于将由组织外部的其他开发人员使用的库)
c# ×3
.net ×2
cocoa-touch ×2
iphone ×2
mysql ×2
asp-classic ×1
coding-style ×1
debugging ×1
dependencies ×1
emulation ×1
gzip ×1
http ×1
ivy ×1
java ×1
maven-2 ×1
null ×1
objective-c ×1
pinvoke ×1
resultset ×1
sql ×1
uikit ×1
uitextview ×1
xml ×1