小编Mar*_*nik的帖子

GIT复制文件保留历史记录

我在GIT中有一个令人困惑的问题.可以说,我有一个文件已dir1/A.txt提交,git保留了提交历史记录

现在我需要(出于某些原因)将文件复制到dir2/A.txt(不移动但复制).我知道有一个git mv命令,但我需要dir2/A.txt具有相同的提交历史dir1/A.txt,并且dir1/A.txt仍然保留在那里.

我不打算在A.txt创建副本后进行更新,所有未来的工作都将完成dir2/A.txt

我知道这听起来令人困惑,我将补充说这种情况是基于java的模块(mavenized项目),我们需要创建一个新版本的代码,以便我们的客户能够在运行时拥有2个不同的版本,第一个最终将在对齐完成时删除版本.我们当然可以使用maven版本,我只是GIT的新手,并对git可以提供的内容感到好奇.

git filenames copy file

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

用于管理任务的Java Framework

我的问题是,Java中是否存在用于管理和并发运行具有逻辑依赖性的任务的框架.

我的任务如下:我有很多独立的任务(比方说A,B,C,D ......),它们是作为命令实现的(比如命令模式).我想有一种执行器,它将接受所有这些任务并以并行方式执行它们.这些任务可以相互依赖(例如,我无法运行C,在运行A之前),同步或异步.

我还想结合使用自定义启发式方法来影响调度程序的执行,例如,如果任务A和B是CPU密集型的,而C是比较高的内存消耗,那么并行运行A和C是有意义的,而不是运行A和B.

在我自己开始构建这些东西之前(我正在考虑基于java.util.concurrent + annotation的约束/规则),我想知道,如果有人能指出我可以满足我需求的项目.非常感谢提前

java multithreading frameworks concurrent-programming

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

通过Java配置定义Spring RestController

是否可以@RestController在Java配置中定义Spring RestController(带注释的类) (在标记为 的方法中带注释的类)?@Configuration@Bean

我有一个由 spring boot 管理的应用程序(就问题而言,版本并不重要,即使是最后一个可用的版本)。该应用程序通过 REST 公开一些端点,因此有多个 REST 控制器,它们依次调用服务(像往常一样)。

现在,根据配置(属性中的application.yml),我想避免启动一些服务,比如用@RestController注释注释的 2 个类,因为它们处理我想要排除的“功能 X”。

我想通过Java 配置来配置我的所有 bean ,这是一个要求。所以我最初的方法是在一个单独的配置中定义所有bean(控制器和服务),该配置由spring boot在扫描期间找到)并@ConditionalOnProperty在配置上添加一个,以便它将出现在一个地方:

@Configuration
public class MyAppGeneralConfiguration {
  // here I define all the beans that are not relevant for "feature X"
  @Bean
  public ServiceA serviceA() {}
  ...
}

@Configuration 
@ConditionalOnProperty(name = "myapp.featureX.enabled", havingValue = "true")
public class MyAppFeatureXConfiguration {
   // here I will define all the beans relevant …
Run Code Online (Sandbox Code Playgroud)

java spring spring-mvc spring-boot

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

在大项目上使用声纳

我正在开展一个相当大的项目(围绕maven 550模块).现在,我想知道如何在CI级别的大型项目上运行声纳(我们使用Jenkins)

如果我们用完mvn sonar:sonar父pom文件夹,它运行约1小时,然后就在OutOfMemory上失败,即使我们显着增加它(~16GB)

因此,我们研究了其他运行声纳的策略.目前最吸引人的想法是:

  1. 在生命周期中为每个模块运行声纳.

  2. 维护在构建后阶段应该并行运行声纳的(子)模块列表.

那么,我想问一下,为这么大的项目运行声纳的最佳方法是什么?有人可以提供一些通用配置来实现第一个或第二个想法或描述任何其他方式/最佳实践吗?

java maven sonarqube

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

预览模式下的声纳覆盖范围

我对声纳预览模式中的代码覆盖有疑问.

我正在尝试为我们的项目配置声纳并探索声纳的预览和增量模式.我们的想法是在我们的开发人员管理的功能分支中以连续的方式在CI中运行它们.目标是给他们一个代码质量的线索,而不会压倒我们的sonarcube和它的数据库.

我看到当在预览模式下运行声纳时,它会生成一个json格式的报告,因为我坚持默认值,它位于:

target\sonar\sonar-report.json
Run Code Online (Sandbox Code Playgroud)

但是,此报告不包含有关代码覆盖的任何信息,仅包含有关违规的信息.

所以,我的问题是,在预览和可能的增量模式下运行声纳时,如何包含有关覆盖范围的信息?

在互联网上有很多半正确的答案,但到目前为止我找不到一个有效的解决方案.

我使用最新的声纳立方体(5.1.2)Maven 3.3.3是我们的构建工具.

覆盖范围是jacoco驱动的,所以我运行以下命令:

用于自己运行测试

mvn org.jacoco:jacoco-maven-plugin:0.7.4.201502262128:prepare-agent clean install -Pcoverage-per-test
Run Code Online (Sandbox Code Playgroud)

用于运行声纳:

mvn sonar:sonar -Dsonar.dynamicAnalysis=reuseReports -Dsonar.analysis.mode=preview -Dsonar.java.coveragePlugin=jacoco
Run Code Online (Sandbox Code Playgroud)

至于每测试覆盖率配置文件,我有以下配置:

<profile>
  <id>coverage-per-test</id>
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <!-- Minimal supported version is 2.4 -->
        <version>2.13</version>
        <configuration>
          <properties>
            <property>
              <name>listener</name>
              <value>org.sonar.java.jacoco.JUnitListener</value>
            </property>
          </properties>
        </configuration>
      </plugin>
    </plugins>
  </build>

  <dependencies>
    <dependency>
      <groupId>org.codehaus.sonar-plugins.java</groupId>
      <artifactId>sonar-jacoco-listeners</artifactId>
      <version>1.2</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</profile>
Run Code Online (Sandbox Code Playgroud)

我几乎是声纳世界的新手,所以任何帮助都会受到赞赏.

非常感谢提前

java maven sonarqube sonarqube5.1

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

Maven - 无法在多模块项目中激活配置文件

我在使用Maven配置项目时遇到了一些困难,需要一些帮助:)

比方说,我有一个多模块项目,有模块A和B(还有大约20个其他模块),但它们都继承了一些"root"pom.

我还有一个自定义maven插件,只能为模块A启用.

插件应该以相同的方式运行所有模块,因此我将配置放在根pom中.

现在,插件在配置文件中定义,以便仅在我明确要求时才会激活它:

mvn test -PrunMyPlugin
Run Code Online (Sandbox Code Playgroud)

如果我从根目录运行此命令并且我正在模块A的目录中运行,这应该可以工作.在模块B中,无论此配置文件如何,插件都不应运行.

另一方面

mvn test
Run Code Online (Sandbox Code Playgroud)

永远不应该调用插件.

我试图在属性上使用激活,但它对我不起作用.当我需要为每个具体模块配置插件并将所有配置保留在根pom中时,我试图避免这种情况.

有人可以提供一些如何做到这一点的简单例子吗?任何帮助都非常感谢.

提前致谢

java maven

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

Maven网站+搜索功能

最近在我们的组织中,我们决定使用maven站点插件并在maven生成的站点中维护有关我们项目的所有文档.但是我没有找到任何方法来添加搜索功能,我唯一看到的是一些皮肤提供与谷歌搜索引擎的集成,但我不能使用它,因为我们在我们自己的网络中运行并且没有机会从外部使其"可转位".

所以,我的问题是,是否有人可以为此建议下降解决方案?我想开发一种maven插件,它可以运行lucene并自行索引所有内容,然后提供一个API来在网站内使用这个搜索,但我希望我不需要重新发明轮子:)所以任何建议都会欢迎来到这里

提前致谢

full-text-search maven maven-site-plugin

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

JVM 以编程方式获取堆中最大的对象

如何以编程方式(从 java 应用程序/代理内部)获取堆中最大对象的“实时”摘要(包括它们的实例计数和大小)?

与分析器的做法类似。

例如,这是 JProfiler 的屏幕截图:

活体物体

通常,我曾经在真正需要的情况下使用堆转储,但现在我想弄清楚分析器如何准确地从正在运行的 JVM 检索此类信息,而无需实际进行堆转储。

是否可以使用Java API获取此类信息?如果不可能,本机代码中的替代方案是什么?代码示例将最适合我的需求,因为 Java 世界的这个特定部分对我来说确实是新的。

我有点相信,如果我有兴趣找到一些真正特定的类的信息,我可以使用仪器或其他东西,但据我所知,它使用采样,所以应该有另一种方法。

我目前正在使用在 Linux 上运行 java 8 的 HotSpot VM,但是我会发现越“通用”的解决方案越好。

java profiler profiling jvm heap-memory

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

Mongo 在 Java 驱动程序中插入 $currentDate

我有一个关于 $currentDate 的问题 ,使用 Java 驱动程序在 mongo db 中插入文档以使其包含“服务器时间”(如某些 RDBMS 中的“now()”)的最佳方法是什么?

例如,以免说我有一个类似的文档:

{
     name : "John",
     birthday : <$currentDate_goes_here>
}
Run Code Online (Sandbox Code Playgroud)

我想要的是插入文档,以便mongo 服务器在服务器端插入时对日期进行评估。

这很关键,因为我们的服务器可能没有完全同步,并且需要有我们可以依赖的时间(例如 mongo 服务器上的时间)。

我正在使用 mongo 的标准 java 驱动程序,因此 Java 中的任何代码片段都将受到欢迎。

这是我到目前为止所尝试过的

 MongoClient mongoClient = new MongoClient();
 DB sampleDB = mongoClient.getDB("sampleDB");
 BasicDBObject update = 
          new BasicDBObject("$set", new     BasicDBObject("name","john")
              .append("$currentDate", new BasicDBObject("birthday",true)));
sampleDB.getCollection("col1").insert(update);
Run Code Online (Sandbox Code Playgroud)

此操作因以下异常而失败:

java.lang.IllegalArgumentException:文档字段名称不能以 '$' 开头(错误键:'$set')位于 com.mongodb.DBCollection.validateKey(DBCollection.java:1845) 位于 com.mongodb.DBCollection._checkKeys( DBCollection.java:1803)在com.mongodb.DBCollection._checkObject(DBCollection.java:1790)在com.mongodb.DBCollectionImpl.applyRulesForInsert(DBCollectionImpl.java:392)在com.mongodb.DBCollectionImpl.insertWithCommandProtocol(DBCollectionImpl.java:381) )在com.mongodb.DBCollectionImpl.insert(DBCollectionImpl.java:186)在com.mongodb.DBCollectionImpl.insert(DBCollectionImpl.java:165)在com.mongodb.DBCollection.insert(DBCollection.java:93)在com.mongodb .DBCollection.insert(DBCollection.java:78) 在 com.mongodb.DBCollection.insert(DBCollection.java:120)

java mongodb mongodb-java mongodb-query

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

潜入Hazelcast新手的问题

我最近有一项任务是评估Hazelcast作为我们产品的键值存储解决方案.我阅读了他们的文档并在这里得到了几个问题:

  1. 关于持久性 - 他们说地图/多图可以是持久的,这很酷.但是他们提供的其他集合(列表,队列,集......)怎么样?一段配置代码可以帮助很多:)

  2. 据我所知,当我得到一个来自hazelcast实例的地图时,它实际上为我创建了一个代理.因此,假设以独立模式部署hazelcast,任何后续的'get'请求都将导致套接字通信.那么嵌入式模式呢?我的意思是如果我在我的JVM进程的RAM中有一个巨大的映射,我不想通过套接字来获取它,因为性能...我希望,它创建了某种"本地代理",直接进入我的RAM,任何人都可以证实或反驳这一点吗?

非常感谢提前

标记

java hazelcast

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