我对将许可信息放入maven项目的各种方法感到困惑.
如果我将许可证放在POM文件中的标签中,那是否意味着我的整个项目都有该许可证?
如果我将license.txt文件放入项目中是否意味着该项目属于该许可证?
如果我将许可证放在每个.java文件的开头,该怎么办?这是否意味着我写的每个班级都有不同的许可证?
当我在POM文件的标题中有许可证信息时的情况如何.这是否意味着所有文件都在该许可下?
如此迷茫...
我刚刚下载了Sonar 3.2并配置了sonar.properties文件以连接到我的本地MySql数据库.我启用了以下设置:
sonar.jdbc.url: jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true
sonar.jdbc.driverClassName: com.mysql.jdbc.Driver
Run Code Online (Sandbox Code Playgroud)
我可以没有任何错误启动服务器,并能够登录到Sonar界面,但是当我在我的maven项目上运行'mvn sonar:sonar'时,我收到以下错误:
[ERROR] Failed to execute goal org.codehaus.mojo:sonar-maven-plugin:2.0:sonar (default-cli) on project vrservices: Can not execute Sonar: Fail to connect to database: Cannot load JDBC driver class 'org.h2.Driver' -> [Help 1]
Run Code Online (Sandbox Code Playgroud)
我已经阅读了一些论坛,他们说要将以下代码放在settings.xml文件中,但这仍然无法解决问题.
<profile>
<id>sonar</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<!-- EXAMPLE FOR MYSQL -->
<sonar.jdbc.url>jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8</sonar.jdbc.url>
<sonar.jdbc.driver>com.mysql.jdbc.Driver</sonar.jdbc.driver>
<sonar.jdbc.username>root</sonar.jdbc.username>
<sonar.jdbc.password></sonar.jdbc.password>
</properties>
</profile>
Run Code Online (Sandbox Code Playgroud)
我想知道是否有人也遇到过这个问题,如果有的话你是怎么解决的?
提前致谢!
在我的ant脚本中,我想在满足条件时退出(停止执行构建)而不会失败.我试过用:
<if>
<equals arg1="${variable1}" arg2="${variable2}" />
<then>
<fail status="0" message="No change, exit" />
</then>
</if>
Run Code Online (Sandbox Code Playgroud)
Ant脚本在条件下停止,但构建失败.我希望停止构建但没有错误.我在Jenkins中使用"Invoke Ant"步骤.
谢谢.
我参与了一个涉及重大重构或完全重新设计的项目维护计划.我们有一个非常复杂的现有技术堆栈,在五年的时间内有机地发展.我自己三年前加入了,并且在疯狂中被"赶上了".这个堆栈是根据客户不断变化的需求而组合在一起的,并且很快成为一个由许多技术和无法控制的数据收集组成的无法管理的庞然大物.
我们的主要目标是使堆栈更加可行和可管理,并提出一个更好的系统来管理未来的数据.我们希望将主要使用PHP编写的紧密集成的业务模型和REST控制器系统转换为一致的REST API.
我们的PHP商业模型依赖于包含大部分数据的eXist XML数据库,以及支持2个子应用程序数据的MySQL.我们有一个SQL和XQuery源代码库,可以动态地管理数据存储中的数据.通过使用PHP-Java Bridge和SAXON以及FOP来创建存储在XML数据库中的文档的PDF传真,业务模型的某些部分依赖于Java代码.由于这是一个Web应用程序,我们使用PHPTAL,XSLT,CSS,XHTML和JavaScript的组合来方便客户端UI.最后,我们有一堆管理脚本来管理PHP,Apache,用Perl编写的函数,这些脚本使用Ant任务进行管理.
堆栈的基本功能是为各种用户模型提供便利的电子表格.多年来,应用程序背后的简单哲学被客户摆弄,过度的最终用户手持,缺乏系统分析监督,糟糕的测试方法以及缺乏未来目标和明确定义的项目范围所破坏.
我们目前正计划阻止任何进一步的开发,更好地描述可能包含或不包括更好的单元测试计划的系统,并使用相同的技术组件为API创建基础.我的直觉反应是提出一个可靠的范围,并使用一个良好支持的编程语言和框架重新设计系统,该语言和框架非常适合编写Web API,可能会丢失一些功能,但保留最重要的功能.我还建议将现有数据迁移到单独的"只读"平台.
我对那些遇到类似情况的人的问题是:
我意识到没有完美的解决方案,为了回答这些问题,我需要进一步指出我们的项目问题.出于各种原因,我无法真正做到这一点.我在寻找有用的资源以帮助我解决这个问题时遇到了问题,我希望有关如何继续的建议.
我需要制作一个现有war文件的副本并在其中更新一个xml文件。我对如何执行此操作的想法是:
我可以使用Gradle进行前3个步骤,但是我只能算出如何使用Ant进行最后一个步骤。
task updateWar() << {
def originalWar = file("deploy/mywar.war")
def outputDir = file("deploy")
def wars = [ "war1", "war2" ]
wars.each() { warFile ->
delete "deploy/WEB-INF/ejb.xml"
copy {
//Step 1
from(zipTree(originalWar)) {
include 'WEB-INF/ejb.xml'
}
into outputDir
//Step 2
filter{
String line -> line.replaceAll("<value>OriginalText</value>",
"<value>UpdatedText</value>")
}
}
//Step 3
copy {
from outputDir
into outputDir
include 'mywar.war'
rename 'mywar.war',"${warFile}.war"
}
//Step 4
ant.jar(update: "true", destfile: deploy/${warFile}.war") {
fileset(dir: deploy", includes: 'WEB-INF/**')
}
}
}
Run Code Online (Sandbox Code Playgroud)
理想情况下,应该有一个过滤器选项,允许我在复制时修改指定的文件,但尚未完成。 …
我们在Jenkins上的构建工作作为发行版构建的一部分运行,例如git push和git pull等git命令,因此需要一种在构建过程中从shell运行经过身份验证的git命令的方法。
我们的jenkins奴隶没有任何凭证,因为它们是按构建创建的一次性Docker容器。
git插件使用Jenkins凭据进行管理,“以某种方式”将GIT_SSH设置为通过该凭据配置的私有密钥。
我检查了源代码,并尝试确定如何配置变量,以便在构建过程中将git pull作为SSH脚本运行。没有成功。
有没有一种方法可以使用Jenkins凭证在构建步骤中运行git命令?
我当前的解决方案是将SSH密钥复制到从属服务器,作为构建环境设置的一部分,但看起来像是重复的工作(加上潜在的安全问题)。
我知道,我们可以很好地使用ANT和Maven来构建项目.我们可以通过Maven的POM.xml运行ANT脚本.但我的问题是我们可以通过ANT的build.xml运行pom.xml吗?即我们可以从build.xml创建maven构建
我有一个 Maven 镜像存储库(Archiva),例如
<settings>
<mirrors>
<mirror>
<id>archiva</id>
<mirrorOf>*</mirrorOf>
<url>http://myMirrorHost:8080/archiva/repository/internal</url>
</mirror>
</mirrors>
...
Run Code Online (Sandbox Code Playgroud)
然而,这是在 VPN 背后,有时我宁愿不使用它/无法连接到 VPM
问题是在 VPN 之外构建时,我收到此错误
myMirrorHost: 未知主机 myMirrorHost -> [帮助 1]
当我希望它超时/如果未找到则不使用镜像
那可能吗?
我的情况涉及运行带有可选参数的ant构建,这些参数总是被指定但不总是被定义,就像这样
ant -DBUILD_ENVIRONMENT=test -Dusername_ext= -Dconf.dir_ext= -Dcgi-dir_ext=
Run Code Online (Sandbox Code Playgroud)
如果参数在命令行中没有给定值,则它们将通过加载.properties文件.我有以下代码,将检查属性是否设置并且不是空白.
<if>
<bool>
<and>
<isset property="username_ext"/>
<not>
<equals arg1="${username_ext}" arg2="" />
</not>
</and>
</bool>
<then>
<property name="username" value="${username_ext}" />
</then>
</if>
<property file="${BUILD_ENVIRONMENT}.properties" />
Run Code Online (Sandbox Code Playgroud)
由于有多个属性,我似乎应该编写一个目标,为每个属性执行相同的操作,而不是每次都重复该代码.
<antcall target="checkexists">
<property name="propname" value="username"/>
<property name="paramname" value="username_ext"/>
</antcall>
<antcall target="checkexists">
<property name="propname" value="conf.dir"/>
<property name="paramname" value="conf.dir_ext"/>
</antcall>
Run Code Online (Sandbox Code Playgroud)
但AFAIK的反击不会设置全球财产.那么如何编写一个目标来接受它需要检查的参数的名称并且不是空白,然后将其复制到其他目标可以使用的参数中?
我有几个repos和很多依赖项.它在build.gradle中看起来像这样:
repositories {
maven {url "A"}
maven {url "B"}
}
dependencies {
compile 'libA'
compile 'libB'
compile 'libC'
}
Run Code Online (Sandbox Code Playgroud)
有没有办法如何指定我将从一个repo(A)下载libA,从另一个repo(B)下载libB和libC?