小编gMa*_*ale的帖子

如何根据Eclipse中的变量设置Ant属性?

我有一个共同的问题,可能有无数的方法来解决它.我正在寻找这种典型场景的优雅,简单的解决方案:

我在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)

我如何以这样的方式做到这一点:

  1. 适用于具有到项目根目录的不同路径的不同计算机(即在团队环境中)
  2. 允许ant build.xml文件在eclipse中执行
  3. 允许ant build.xml文件在eclipse之外执行(即从命令行)
  4. 允许build.properties文件存在于项目根目录以外的目录中

eclipse ant variables build-process properties

12
推荐指数
2
解决办法
4万
查看次数

没有-q标志让蚂蚁安静吗?

我有一个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,只要运行默认目标,我所追求的就是让构建安静地运行.

ant build-process build

12
推荐指数
3
解决办法
1万
查看次数

架构:操纵模型而不污染POJO的最佳实践?并且无需在任何地方重复锅炉板代码

这是我们经常遇到的问题.必须有一些最佳实践来解决这个问题......

简化问题

放置操作POJO的通用代码的最佳位置在哪里?

这样:

  • POJO只有属性和getter/setter
  • 相同的模型操作代码不会重复"无处不在"
  • 这是清楚哪些类是负责操纵模型

背景

我们有一个定义我们域的模式.从那时起,我们生成一个"纯"模型,它由来自JAXB的简单对象(PO​​JO)组成.

在使用此模型时,团队中的几位开发人员已创建了用于访问和操作模型的样板代码.它在许多地方"撒了".有些人创建了包装器对象,它们继承了模型的实例并添加了功能.其他人创建了外部实用程序类.我正在寻求统一这个代码,以便它不再"洒在各处". 理想情况下,逻辑可以包含在某类对象中,这些对象明确负责模型的通用操作.

我们使用杂货店作为一般例子.模型对象包括以下内容:
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保持"纯粹",并且相同的锅炉板代码不会"洒在任何地方".

java architecture design-patterns software-design

12
推荐指数
2
解决办法
2633
查看次数

有没有一种简单的方法将字节附加到StringBuffer并指定编码?

将字节附加到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)

坦率地说,这非常难看.

当然,有一个更好的方法(除了将相同的代码分成多行)???????

java byte utf-8 char character-encoding

11
推荐指数
1
解决办法
2万
查看次数

JAXB:使用同一元素的多个名称解组xml

我认为这对于真正了解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文件可以保存一天吗?

java xml binding jaxb unmarshalling

11
推荐指数
1
解决办法
7954
查看次数

JQuery:用外部文件中的html替换DIV内容.完整的例子?

什么是在页面上启用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的内容是什么?

javascript jquery jquery-selectors

10
推荐指数
1
解决办法
6万
查看次数

Groovy(文件IO):查找所有文件并返回所有文件 - Groovy方式

好的,这应该很容易......

我是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(),同时仍然可读.

file-io groovy file

8
推荐指数
2
解决办法
1万
查看次数

Java控制台菜单库 - 是否有一种简单的方法来创建命令行菜单?

背景

在Java中,我想制作一个简单,快速的控制台应用程序,它提供一系列菜单并接受用户输入,然后调用某些方法并输出其他菜单.基本上,我需要创建一个循环:

menu > user selection > action > menu > ...
Run Code Online (Sandbox Code Playgroud)

最终,我在使用Apache Camel的集成服务器上使用它.我有一个"快速而肮脏"的应用程序,我用它来运用一些服务器路由作为开发工具.我不想花很多时间在这么简单的事情上.

必须有一个简单的方法来做到这一点.命令行上的控制台和菜单已经存在了几十年!必须有一个java库,这样做很好.我只是没找到一个......

是否有一个库或一些Apache实用程序,或任何可以创建超快速,超级简单的控制台菜单的小菜一碟?

使用适当的工具,制作一个功能相似的菜单应该不到30分钟
git add -i

也就是说,我需要创建类似于git Interactive命令或任何其他控制台应用程序的功能,我想快速完成.


编辑:

下面使用"Cliche"的建议工作得很好,允许我只是注释一些方法并自动创建一个菜单.如果它有助于某人,我想要包括一些关于让Cliche工作的重要说明:

  1. 该项目已移至谷歌代码
  2. 它似乎没有得到维护,但在问题部分,jbachorik对项目进行了重复化!
  3. 以下是我需要对POM进行的唯一调整:

添加回购:

    <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)

java console-application

8
推荐指数
1
解决办法
4645
查看次数

创建名为'sessionFactory'的bean时出错:MalformedParameterizedTypeException

任何建议都会得到赞赏.我很难过......

问题

在我的笔记本电脑上,只要我们的应用程序尝试加载application-config.xml,我就会得到一个java.lang.reflect.MalformedParameterizedTypeException.

完全相同的代码适用于我的桌面和我的同事的台式机/笔记本电脑.但在我的笔记本电脑上它会抛出这个错误.由于我的笔记本电脑和台式机完全相同的开发环境(Mac OS X Leopard上的Eclipse中的Java 1.6 Maven项目),我通过执行以下操作缩小了原因:

  • 检查了Subversion的一个新项目(所以没有代码差异)
  • 复制并替换我的整个Eclipse目录(因此没有Eclipse版本/插件差异)
  • 复制并替换我的整个.m2目录(因此没有maven /项目依赖性差异)

什么可能导致这个错误在一个地方而不是另一个?下面是相关bean的片段和错误......


代码段:application-config.xml

<?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)

java eclipse spring maven-2 hibernate

7
推荐指数
1
解决办法
6万
查看次数

蚂蚁条件 - 首先是'如果'或'除非'

如果一个ant目标同时使用ifunless,那么首先进行评估?

首先是鸡还是鸡蛋?...

<target name="prepare" if="chicken" unless="egg" >
    <echo>Dinner time. Chicken is served!</echo>
</target>
Run Code Online (Sandbox Code Playgroud)

蚂蚁会首先评估鸡肉财产吗?还是蛋的属性?

ant conditional target conditional-statements

7
推荐指数
1
解决办法
1785
查看次数