我有一个共同的问题,可能有无数的方法来解决它.我正在寻找这种典型场景的优雅,简单的解决方案:
我在Eclipse中有一个带有Ant构建文件(build.xml)的项目,构建文件使用属性文件(build.properties).在该属性文件中,我想设置一个指向eclipse项目根目录的属性,例如:
project.root = /path/to/eclipse/workspace/projectName
Run Code Online (Sandbox Code Playgroud)
或者最好:
project.root = ${path.to.eclipse.workspace}/projectName
Run Code Online (Sandbox Code Playgroud)
我如何以这样的方式做到这一点:
我有一个ant构建文件,通常在非常不同的环境中运行.默认情况下,我正在寻找与使用相同的行为:
ant -q
Run Code Online (Sandbox Code Playgroud)
但是,由于某些团队成员的配置不同,在每个人的环境中指定-q选项并不容易以统一的方式完成(有些人从eclipse运行ant,有些人从命令行运行,有些人从调试/分析工具运行等等.与用于指定像蚂蚁参数不同的方法-q)
所以我正在寻找一种让ant文件静静地调用自己的方法 ......
像下面这样的东西是理想的:
<target name="default">
<antcall quiet="yes" target="build" /> <!-- doesn't work -->
</target>
Run Code Online (Sandbox Code Playgroud)
任何人都可以想到要做到这样的事情吗?无论是否设置了-q,只要运行默认目标,我所追求的就是让构建安静地运行.
这是我们经常遇到的问题.必须有一些最佳实践来解决这个问题......
放置操作POJO的通用代码的最佳位置在哪里?
这样:
我们有一个定义我们域的模式.从那时起,我们生成一个"纯"模型,它由来自JAXB的简单对象(POJO)组成.
在使用此模型时,团队中的几位开发人员已创建了用于访问和操作模型的样板代码.它在许多地方"撒了".有些人创建了包装器对象,它们继承了模型的实例并添加了功能.其他人创建了外部实用程序类.我正在寻求统一这个代码,以便它不再"洒在各处". 理想情况下,逻辑可以包含在某类对象中,这些对象明确负责模型的通用操作.
我们使用杂货店作为一般例子.模型对象包括以下内容:
Products, Aisle, Shelf, Employee, WorkSchedule, Vendor
常见的模型操作包括以下内容:
findManagerWorkingOnDay(day, schedule), findAisleForProduct(apples), countItemsOnShelf(topShelf), product.isModified(), removeProductFromVendor(apples, vendor)
我们不希望用类似的功能"污染"我们的供应商POJO removeProductFromVendor.同样,我们不一定要扩展每个模型对象,只是添加isModified属性,这样我们的GUI就可以知道"启用/禁用"保存按钮.
或者我们呢?
一旦模型对象在内存中,谁应该负责操纵它 - 例如,迭代一个"今天值班的员工"列表,并找到一个谁是"经理?"
在这些情况下,数据库调用过度,因为我们已经在内存中拥有了所需的一切(例如:我们已经查询过DataStore,我们需要在整个应用程序中使用结果对象). 理想情况下,此代码可供具有(例如)员工列表的任何对象使用.
在最佳实践方面,放置静态方法的理想位置在哪里:
public static Employee findManager(List<Employee> employeesOnDuty);
这将迭代员工列表(POJO)并返回第一个在哪里 employee.title.toLowerCase().contains("manager")
如果一个团队使用这个样本对象模型,几个人会编写这样的函数.有哪些最佳实践可以捕捉到这一责任,使POJO保持"纯粹",并且相同的锅炉板代码不会"洒在任何地方".
将字节附加到StringBuffer(即将字节转换为char)并指定使用的字符编码(ASCII,UTF-8等)的最简单方法是什么?
我想在stringbuffer中添加一个字节.这样做需要将字节转换为char:
myStringBuffer.append((char)nextByte);
Run Code Online (Sandbox Code Playgroud)
但是,上面的代码使用我的机器(MacRoman)的默认字符编码.同时,系统/网络中的其他组件需要UTF-8.所以我需要这样的东西:
try {
myStringBuffer.append(new String(new Byte[]{nextByte}, "UTF-8"));
} catch (UnsupportedEncodingException e) {
//handle error
}
Run Code Online (Sandbox Code Playgroud)
坦率地说,这非常难看.
当然,有一个更好的方法(除了将相同的代码分成多行)???????
我认为这对于真正了解JAXB绑定文件的人来说很容易......
如何配置JAXB以将多个元素解组到同一个类中?
注意:我想避免为我的项目添加另一个依赖项(如MOXy).理想情况下,这可以通过注释或自定义绑定文件来完成.
我有一个XML文档,其中包含相同元素的许多变体 - 每个变体具有完全相同的属性.使用下面的示例,我关心的只是"员工",但XML指定"董事,经理和员工".出于我们的目的,这些都是同一父类的子类,我们只需要使用父类型(Employee),并且我们的对象模型没有或不需要子类的实例.
我希望JAXB将任何director, manager, or staff元素实例绑定到一个Employee对象中.
输入:
<organization>
<director>
<fname>Dan</fname>
<lname>Schman</lname>
</director>
<manager>
<fname>Joe</fname>
<lname>Schmo</lname>
</manager>
<staff>
<fname>Ron</fname>
<lname>Schwan</lname>
</staff>
<staff>
<fname>Jim</fname>
<lname>Schwim</lname>
</staff>
<staff>
<fname>Jon</fname>
<lname>Schwon</lname>
</staff>
</organization>
Run Code Online (Sandbox Code Playgroud)
输出:
在解组这个例子之后,我最终得到一个Organization具有一个属性的对象:List<Employees> employees每个雇员只有firstName和lastName.
(注意:每个员工都是EmployeeNOT 类型Director/Manager/Staff.解组时子类信息会丢失.我们也不关心编组 - 我们只需要从XML创建对象)
这可以在没有MOXy这样的扩展的情况下完成吗?自定义bindings.xjb文件可以保存一天吗?
题
什么是在页面上启用jQuery然后使用它来用外部文件中的HTML文本替换DIV内容的完整代码?
背景
我是jQuery的新手,我很乐意使用它,所以我可以学习它.我有一个网站,我需要替换每个页面上存在的相同div(页脚)的内容.幸运的是,每个页面都已导入相同的头文件.所以我要用一些jQuery魔法来修改那个头文件!我无法找到完整的例子,我认为其他人可能有类似的问题.谁比SO大师更好问?
例
给定一个基本的HTML文件Example.html:
<html>
<head>
</head>
<body>
<div id="selectedTarget">
Existing content.
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
还有一个includes/contentSnippet.html包含html片段的外部文件:
<p>
Hello World!
</p>
Run Code Online (Sandbox Code Playgroud)
新Example.html文件将链接正确的jQuery库(来自./js目录)并通过jQuery替换div的内容是什么?
好的,这应该很容易......
我是groovy的新手,我正在寻求实现以下逻辑:
def testFiles = findAllTestFiles();
Run Code Online (Sandbox Code Playgroud)
到目前为止,我已经提出了下面的代码,它成功地打印了所有文件名.但是,我只需要将它们放入集合中,而不是打印.当然,我可以用旧的java方式做到这一点:只是实例化一个集合,添加所有元素并返回它.但是,那不会教我任何东西.
那么你如何以酷炫的"Groovy"方式做到这一点呢?
static File[] findAllTestFiles() {
def directory = new File("src/test/java");
def closure = {File f -> if(f.name =~ /Test\.java$/) println f }
directory.eachFileRecurse FileType.FILES, closure
return null;
}
Run Code Online (Sandbox Code Playgroud)
我希望在Groovy中使用尽可能少的代码实现findAlltestFiles(),同时仍然可读.
在Java中,我想制作一个简单,快速的控制台应用程序,它提供一系列菜单并接受用户输入,然后调用某些方法并输出其他菜单.基本上,我需要创建一个循环:
menu > user selection > action > menu > ...
Run Code Online (Sandbox Code Playgroud)
最终,我在使用Apache Camel的集成服务器上使用它.我有一个"快速而肮脏"的应用程序,我用它来运用一些服务器路由作为开发工具.我不想花很多时间在这么简单的事情上.
必须有一个简单的方法来做到这一点.命令行上的控制台和菜单已经存在了几十年!必须有一个java库,这样做很好.我只是没找到一个......
是否有一个库或一些Apache实用程序,或任何可以创建超快速,超级简单的控制台菜单的小菜一碟?
使用适当的工具,制作一个功能相似的菜单应该不到30分钟
git add -i
也就是说,我需要创建类似于git Interactive命令或任何其他控制台应用程序的功能,我想快速完成.
编辑:
下面使用"Cliche"的建议工作得很好,允许我只是注释一些方法并自动创建一个菜单.如果它有助于某人,我想要包括一些关于让Cliche工作的重要说明:
添加回购:
<repository>
<id>sonatype-nexus-snapshots</id>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
</repository>
Run Code Online (Sandbox Code Playgroud)
添加依赖:
<dependency>
<groupId>com.googlecode.cliche</groupId>
<artifactId>cliche</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
Run Code Online (Sandbox Code Playgroud) 任何建议都会得到赞赏.我很难过......
问题
在我的笔记本电脑上,只要我们的应用程序尝试加载application-config.xml,我就会得到一个java.lang.reflect.MalformedParameterizedTypeException.
完全相同的代码适用于我的桌面和我的同事的台式机/笔记本电脑.但在我的笔记本电脑上它会抛出这个错误.由于我的笔记本电脑和台式机完全相同的开发环境(Mac OS X Leopard上的Eclipse中的Java 1.6 Maven项目),我通过执行以下操作缩小了原因:
什么可能导致这个错误在一个地方而不是另一个?下面是相关bean的片段和错误......
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">
...
<bean id="dataServiceRepository" class="com.saic.gnosis.dao.DataServiceDao">
<constructor-arg ref="sessionFactory" />
</bean>
...
<bean id="implementationRepository" class="com.saic.gnosis.dao.ImplementationDao">
<property name="dataServiceRepository" ref="dataServiceRepository" />
<property name="implementationDetailRepository" ref="implementationDetailRepository" />
<property name="implementationStrategyFactory" ref="implementationStrategyFactory" />
</bean>
...
<bean id="implementationStrategyFactory" class="com.saic.gnosis.plant.ImplementationStrategyPlant" />
...
<bean id="implementationDetailRepository" class="com.saic.gnosis.dao.ImplementationDetailDao">
<constructor-arg ref="sessionFactory" />
</bean>
...
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="mysqlDataSource" />
<property name="packagesToScan">
<list>
<value>com.saic.gnosis.model</value>
<value>com.saic.gnosis.model.observable</value>
</list>
</property>
<property …Run Code Online (Sandbox Code Playgroud) 题
如果一个ant目标同时使用if和unless,那么首先进行评估?
例
首先是鸡还是鸡蛋?...
<target name="prepare" if="chicken" unless="egg" >
<echo>Dinner time. Chicken is served!</echo>
</target>
Run Code Online (Sandbox Code Playgroud)
蚂蚁会首先评估鸡肉财产吗?还是蛋的属性?