小编Anm*_*pta的帖子

Eclipse-Maven:更新项目从构建路径中排除 src/main/resources 文件夹

在此输入图像描述

我今天升级了我的 Spring 工具套件,从那时起我就坚持正确构建项目。当我 Maven->更新项目时,它排除 src/main/resources 文件夹。如果我“删除”该排除(将其设置为“排除(无)”),则一切正常。但是,当我再次执行 Maven->Update Project 时,结果就是这样。

我已经探索了数百个链接,但到目前为止还没有成功。更新之前一切正常。

如何让 Maven 包含 src/main/resources 和 src/test/resources?

包含资源文件夹时的 .classpath 文件(我希望默认生成的文件):

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="src" output="target/classes" path="src/main/java">
        <attributes>
            <attribute name="optional" value="true"/>
            <attribute name="maven.pomderived" value="true"/>
        </attributes>
    </classpathentry>
    <classpathentry kind="src" output="target/classes" path="src/main/resources">
        <attributes>
            <attribute name="maven.pomderived" value="true"/>
        </attributes>
    </classpathentry>
    <classpathentry kind="src" output="target/test-classes" path="src/test/java">
        <attributes>
            <attribute name="optional" value="true"/>
            <attribute name="maven.pomderived" value="true"/>
        </attributes>
    </classpathentry>
    <classpathentry kind="src" output="target/test-classes" path="src/test/resources">
        <attributes>
            <attribute name="maven.pomderived" value="true"/>
        </attributes>
    </classpathentry>
    <classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
        <attributes>
            <attribute name="maven.pomderived" value="true"/>
            <attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
        </attributes> …
Run Code Online (Sandbox Code Playgroud)

java eclipse spring maven spring-tool-suite

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

Maven-对于在Artifactory上部署的工件,无法解决传递依赖性

我有两个项目-A和B,其中A依赖于B。我将B打包为jar并将其部署在maven服务器(人工工厂)上,然后将该jar作为对项目A的普通依赖项包含在pom文件中。B的jar文件显示在项目A的Maven依赖项中,但项目B的依赖项未显示在依赖项层次结构中。这导致B的依赖项的类未找到异常。

但是,我的项目A和B在同一个Eclipse工作区中。当我打开项目B时,项目A开始从工作空间而不是远程存储库中引用项目B,并且一切正常。

这个问题-Maven。传递依存关系最接近我的问题,但是项目B的依存关系不是可选的。

怎么了

项目B的POM

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.myapp</groupId> 
  <artifactId>utils</artifactId>
  <version>1.0.0-RELEASE</version>
  <packaging>jar</packaging>

  <name>utils</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

<!-- Following doesn't get added to project A -->
  <dependencies>
    <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>2.4</version>
    </dependency>
  </dependencies>
</project>
Run Code Online (Sandbox Code Playgroud)

项目A的POM

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.myapp</groupId>
  <artifactId>core-app</artifactId>
  <version>1.0.0-RELEASE</version>
  <packaging>jar</packaging>

  <name>core-app</name>
  <url>http://maven.apache.org</url>

  <dependencies>
    <dependency>
      <groupId>com.myapp</groupId>
      <artifactId>utils</artifactId>
      <version>1.0.0-RELEASE</version>
    </dependency>
  </dependencies>
</project>
Run Code Online (Sandbox Code Playgroud)

我正在使用Maven快速入门原型。我的项目的项目结构为(我打包为jar):

project-name
  src/main/java
  src/test/java
  pom.xml
Run Code Online (Sandbox Code Playgroud)

java eclipse artifactory maven transitive-dependency

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

如何将其他数据传递给Hibernate Envers中的Custom RevisionEntity?

这是RESTful网络应用程序.我正在使用Hibernate Envers来存储历史数据.除了修订号和时间戳,我还需要存储其他详细信息(例如:IP地址和经过身份验证的用户).Envers提供了多种方法来拥有一个非常棒的自定义修订实体.我在修改实体上设置自定义数据时遇到问题.

@RevisionEntity( MyCustomRevisionListener.class )
public class MyCustomRevisionEntity extends DefaultRevisionEntity {
    private String userName;

    private String ip;

    //Accessors
}

public class MyCustomRevisionListener implements RevisionListener {
    public void newRevision( Object revisionEntity ) {
        MyCustomRevisionEntity customRevisionEntity = ( MyCustomRevisionEntity ) revisionEntity;
        //Here I need userName and Ip address passed as arguments somehow, so that I can set them on the revision entity. 
    }
}
Run Code Online (Sandbox Code Playgroud)

由于newRevision()方法不允许任何其他参数,我无法将自定义数据(如用户名和ip)传递给它.我怎样才能做到这一点?

Envers还提供了另一种方法:

另一种使用org.hibernate.envers.RevisionListener的方法是调用org.hibernate.envers.AuditReader接口的getCurrentRevision(类revisionEntityClass,boolean persist)方法来获取当前版本,并用所需信息填充它.

所以使用上面的方法,我将不得不做这样的事情:

更改我当前的dao方法,如:

public void persist(SomeEntity entity) {
     ...
     entityManager.persist(entity);
     ...
}
Run Code Online (Sandbox Code Playgroud)

至 …

java audit spring hibernate hibernate-envers

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

为什么JUnit断言Java中的通用方法不通用?

我正在使用JUnit 4.12.断言方法本质上不是通用的.例如,assertEquals方法如下所示:

static public void assertEquals(Object expected, Object actual) {..}
Run Code Online (Sandbox Code Playgroud)

为什么不喜欢?

static public <T> void assertEquals(T expected, T actual) {..}
Run Code Online (Sandbox Code Playgroud)

我觉得需要通用方法声明来更好地编译时间和IDE自动完成.

java generics junit

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

使用'cast'方法将Integer转换为int时的Autoboxing/Unboxing

这是一个非常简单的例子:我试图将Object类型转换为这样的原语:

Object object = Integer.valueOf(1234);

int result1 = int.class.cast(object); //throws ClassCastException: Cannot convert java.lang.integer to int

int result2 = (int)object; //works fine
Run Code Online (Sandbox Code Playgroud)

这是类'Class'的cast方法的源代码

public T cast(Object obj) {
    if (obj != null && !isInstance(obj))
        throw new ClassCastException(cannotCastMsg(obj));
    return (T) obj;
}

private String cannotCastMsg(Object obj) {
    return "Cannot cast " + obj.getClass().getName() + " to " + getName();
}
Run Code Online (Sandbox Code Playgroud)

为什么会这样?其他原语也是如此.

实例

java autoboxing casting

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

在这种情况下应该使用 try-finally

在 DAO 层类中,假设我有如下代码:

private EntityManagerFactory factory;

public void update(T entity) {
    EntityManager entityManager = factory.createEntityManager();
    entityManager.getTransaction().begin();
    entityManager.merge(entity);
    entityManager.getTransaction().commit();
    entityManager.close();
}
Run Code Online (Sandbox Code Playgroud)

现在在上面的代码块中,在调用 entityManager.close() 之前,可能会(很少)发生 RuntimeExceptions。那么,这样写会不会很好:

public void update(T entity) {
    EntityManager entityManager = factory.createEntityManager();
    try {
        entityManager.getTransaction().begin();
        entityManager.merge(entity);
        entityManager.getTransaction().commit();
    }
     finally {
        entityManager.close();
    }
}
Run Code Online (Sandbox Code Playgroud)

由于我的方法中的所有对象都是本地的,一旦方法结束它们将不存在。那么,当方法内部发生异常时,该方法的堆栈会发生什么变化呢?

我认为如果堆栈存在异常情况,那么我确实需要 finally 块来关闭 entityManager。实际发生了什么?

java stack exception try-catch

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