小编dev*_*dev的帖子

使用持续集成在Gradle中发布快照与发布版本

我正在学习Gradle,来自Ant + Ivy和Maven背景,我正试图围绕正确的方式来使用gradle发布我的软件的发布版本.我还需要不断地集成我的项目,而不必不断发布独立的工件.

Ant +常春藤

在Ant + Ivy世界中,我可以创建publishSnapshot和publishRelease目标.这些可以使用不同的常春藤解析器来解析和发布到我在Nexus中的单独快照或发布存储库.

Maven的

使用Maven,我可以定义一个snapshotRepositoryrepository在我的distributionManagement部分中将maven发布到我的单独快照或在Nexus中发布存储库.

摇篮

现在输入gradle.我怎样才能实现同样的功能?我正在使用常春藤风格的存储库.

感谢您提供的任何见解.

回答

感谢René在下面的回答,我终于能够创建一个可行的解决方案.问题的关键在于我需要不断整合我的所有项目.为此,我认为使用版本号声明依赖latest.integration是获取最新版本库的唯一方法,因此我需要使用常春藤样式存储库.

实际上,还有其他方法可以引入最新版本的库,以便在所有项目中不断集成我的软件.解决的办法是使用uploadArchives完全一样勒列出以下(也请注意,您将需要apply plugin: 'maven'为此工作.确保你的资料库也Maven的风格,并宣布的依赖时,您可以使用动态版本号如图所示这里.在我的情况是,我在common.gradle和下游项目中列出了一个全局版本号,我曾经version: version引用过全局版本变量.这样,我系统中的每个工件都有相同的版本.当它需要发布时,我可以将此值从1.0-SNAPSHOT更改为1.0并按顺序构建每个.

nexus dependency-management gradle

33
推荐指数
2
解决办法
3万
查看次数

Gradle任务按顺序调用其他任务

我正在gradle中完成一项需要调用许多其他任务的任务.

这就是我所拥有的:

task ci(dependsOn: [
    clean,
    build,
    test
])
Run Code Online (Sandbox Code Playgroud)

奇怪的是我看到的输出:

gradle ci
:compileJava
:processResources UP-TO-DATE
:classes
:jar
:assemble
:compileTestJava UP-TO-DATE
:processTestResources UP-TO-DATE
:testClasses UP-TO-DATE
:test UP-TO-DATE
:check UP-TO-DATE
:clean             // cleaning after the build
:build
:ci
Run Code Online (Sandbox Code Playgroud)

请注意,清理发生在构建目标之后,这会清除我的构建.

如果我将任务更改为:

task ci(dependsOn: [
    clean,
    test
])
Run Code Online (Sandbox Code Playgroud)

然后它似乎以正确的顺序执行:

:clean UP-TO-DATE    // cleaning before the build
:compileJava
:processResources UP-TO-DATE
:classes
:compileTestJava UP-TO-DATE
:processTestResources UP-TO-DATE
:testClasses UP-TO-DATE
:test UP-TO-DATE
:ci UP-TO-DATE
Run Code Online (Sandbox Code Playgroud)

我尝试通过添加build.dependsOn clean来修复原始目标,但这似乎没有任何影响.

任何帮助表示赞赏.

continuous-integration gradle

31
推荐指数
2
解决办法
3万
查看次数

在父上下文和子上下文中声明Spring Bean

我有一个spring bean(dao)对象,我通过以下xml在我的ServletContext中实例化:

<bean id="userDao" class="com.company.dao.impl.UserDaoImpl">
    <property name="sessionFactory" ref="sessionFactory" />
</bean>
Run Code Online (Sandbox Code Playgroud)

这个bean在我的webapp-servlet.xml文件中声明,并由我的应用程序在ServletContext中使用.

我也在使用SpringSecurity.我的理解是,它在不同的上下文中运行(SecurityContext).

我的应用程序有一个webapp-security.xml,我在其中实例化一个自定义身份验证提供程序.我想使用我的应用程序中使用的我的dao也在我的安全上下文中进行用户查找,但是当我运行时:

<bean id="userAuthenticationProvider" class="com.company.security.UserAuthenticationProvider">
    <property name="userDao" ref="userDao" />
</bean>
Run Code Online (Sandbox Code Playgroud)

我得到错误,说没有这样的bean"userDao".bean在我的其他上下文中声明的bean中自动装配好,但不在我的安全上下文中.根据Spring Docs,我相信web.xml中需要两个单独的上下文

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener
    </listener-class>
</listener>

<listener>
    <listener-class>
        org.springframework.security.web.session.HttpSessionEventPublisher
    </listener-class>
</listener>
Run Code Online (Sandbox Code Playgroud)

所以我的问题是,如何才能访问我的SecurityContext中存在于我的ServletContext中的DAO?我的dao是否有范围修饰符,或者我可以在运行时在我的身份验证提供程序中以某种方式获取ServletContext?作为参考,这是我想在我的身份验证提供程序中使用它的方式:

public class UserAuthenticationProvider extends
    AbstractUserDetailsAuthenticationProvider {

    @Override
protected UserDetails retrieveUser(String userName,
        UsernamePasswordAuthenticationToken authenticationToken)
        throws AuthenticationException {

    // use dao here
Run Code Online (Sandbox Code Playgroud)

谢谢你向我解释这个

更新:

继续我的调查,似乎我使用我的daos的DispatcherServlet是一个子上下文,安全上下文在某个更高的位置.因此,父上下文无法看到我的DispatcherServlet中的bean.我认为答案是以某种方式将我的bean声明移动到父应用程序上下文中,但我不知道如何做到这一点.这是我的web.xml

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>WEB-INF/spring-*.xml
    </param-value>
</context-param>

<listener>
    <listener-class>
        org.springframework.security.web.session.HttpSessionEventPublisher
    </listener-class>
</listener>

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener
    </listener-class>
</listener>

<filter>
    <filter-name>springSecurityFilterChain</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy
    </filter-class>
</filter>

<filter-mapping>
    <filter-name>springSecurityFilterChain</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

<servlet> …
Run Code Online (Sandbox Code Playgroud)

security spring servlets ioc-container security-context

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

MySQL Connector/J替换

我想知道是否有使用MySQL Connector/J JDBC驱动程序的替代方法?Connector/J是根据GPL许可证授权的,在我的情况下不适用.我喜欢MySQL,但我也无力支付成为合作伙伴的费用(我在网上看了一年大约600美元).

我希望在我的封闭源应用程序中可以使用不同的许可证在线存在其他一些开源驱动程序,但是无法找到.

如果没有替代品,那么是否有人有他们推荐的任何其他数据库?我正在考虑切换到PostgreSQL.

mysql gpl jdbc

14
推荐指数
2
解决办法
5934
查看次数

JSF行动与结果属性

我是JSF的新手,并试图了解动作与结果属性之间的区别是什么?这不是按钮和命令按钮之间的区别,而是同一按钮标签上的结果与动作属性之间的区别.

例如,我可以:

<h:button value="Go" outcome="<value>" />
Run Code Online (Sandbox Code Playgroud)

要么

<h:button value="Go" action="<value>" />
Run Code Online (Sandbox Code Playgroud)

我不确定何时使用哪一个.另外,如果<value><#{bean.methodThatReturnsStringInNavigationRule}>或者它会有所作为<string literal in navigation rule>吗?

谢谢.

jsf jsf-2

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

Web应用程序中嵌入式Derby的JDBC连接URL

我有一个与我的webapp一起部署到WEB-INF/classes/myDb的derby数据库

我的jdbc.connection url应该连接什么才能写入数据库?

我在尝试

jdbc:derby:myDb;
Run Code Online (Sandbox Code Playgroud)

它找不到数据库.我需要能够修改数据库.如果我把classpath:myDb,它找到了它,但不幸的是只读取了derby docs.

java web-applications jdbc derby embedded-database

5
推荐指数
1
解决办法
1865
查看次数

在 Camel DSL 中使用 Exchange 属性“to”

我想在 Camel Exchange 上设置一个属性,然后在保存文件时使用这个属性。在我的骆驼 dsl 中,我有以下内容:

.process(processorToSetExhangeProperty)  // sets the property <uid> on the exchange
.to("file:/tmp?fileName=file-" + property("uid") + ".xml")
Run Code Online (Sandbox Code Playgroud)

该文件被保存为:

"file-property{uid}.xml" though
Run Code Online (Sandbox Code Playgroud)

我的处理器如下:

@Override
public void process(Exchange exchange) throws Exception {
    UUID uuid = UUID.randomUUID();
    exchange.setProperty("uid", uuid.toString());
    exchange.setOut(exchange.getIn());
}
Run Code Online (Sandbox Code Playgroud)

关于可能出了什么问题或我如何实现这一目标的任何想法?

java apache-camel

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

从Xib呈现模态视图控制器

我想从xib中显示一个模态对话框.显示我的窗口的代码是:

self.vcSettings = [[ViewControllerSettings alloc] initWithNibName:@"ViewControllerSettings" bundle:[NSBundle mainBundle]];  

[self presentModalViewController:self.vcSettings animated:YES];
Run Code Online (Sandbox Code Playgroud)

当它运行时,我得到一个空白屏幕,而不是我的ViewControllerSettings.xib内部.我想我会以某种方式错误地显示视图.任何建议表示赞赏.

编辑:

我认为这应该是

[self.navigationController presentModalViewController:self.vcSettings animated:YES];
Run Code Online (Sandbox Code Playgroud)

但由于某种原因self.navigationController,没有.

编辑:

Self是我在AppDelegate中实例化的UIViewController,如下所示:

UIViewController* viewMain = [[ViewController_iPhone alloc]     initWithNibName:@"ViewController_iPhone" bundle:nil];

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
self.window.backgroundColor = [UIColor whiteColor];
self.window.rootViewController = viewMain;
[self.window makeKeyAndVisible];
Run Code Online (Sandbox Code Playgroud)

modal-dialog xib presentmodalviewcontroller ios

4
推荐指数
1
解决办法
9481
查看次数

在运行时获取JSF中所有托管Bean的列表

我想获得JSF应用程序中所有托管bean的列表.在Spring中,我可以执行context.getBeansOfType()之类的操作.JSF中有相应的方法吗?

我有许多@ManagedProperty实现接口的bean.我想得到这些适配器的列表并循环遍历它们,而不是显式调用每个bean以保持代码清洁.

谢谢

java java-ee jsf-2

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

平均Mongo中的文档的子文档字段

对于给定的记录ID,如果我在MongoDB中有以下内容,如何获取子文档字段的平均值:

/* 0 */
{
    "item" : "1",
    "samples" : [ 
        {
            "key" : "test-key",
            "value" : "1"
        }, 
        {
            "key" : "test-key2",
            "value" : "2"
        }
    ]
}

/* 1 */
{
    "item" : "1",
    "samples" : [ 
        {
            "key" : "test-key",
            "value" : "3"
        }, 
        {
            "key" : "test-key2",
            "value" : "4"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

我想获得给定项目id的key ="test-key"值的平均值(在本例中为1).所以平均值应该是$ avg(1 + 3)= 2

谢谢

mongodb

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