小编Jea*_*evy的帖子

maven-resources-plugin 和 project.build.resources 标签有什么区别?

我很难理解Maven 中的maven-resources-pluginproject.build.resources标签之间的区别。

两者似乎都有相同的目的。[resources、testResources 和 copy-resources]的不同目标maven-resources-plugin也可以使用 resources 标签来实现:

<resources>
  <resource>  
    <directory>src/dir</directory>
    <targetPath>dest/dir</targetPath>
  </resource>  
</resources>

<testResources>
  <testResource>
  <directory>src/test/dir</directory>
  </testResource>
Run Code Online (Sandbox Code Playgroud)

并且使用<resources>标签可以有效地将源目录中的指定文件复制到目标目录,copy-resources类似于maven-resources-plugin.

那么,它们之间有什么区别吗?
它们在任何特定场景下的功能会有所不同吗?

maven maven-resources-plugin

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

多模块项目上的Maven站点无法解析依赖关系

我想将我的连续整合工作(Hudson)分成两个步骤.(因为一起构建和报告的运行时间太长.)在第一个工作中,我成功地使用"mvn package" 构建了我的多模块maven项目.然后我将我的工作区复制到另一个位置并尝试仅使用目标"site"和/或findbugs/checkstyle/pmd再次构建项目以创建报告.但这不起作用!Maven 无法解析子模块的依赖关系.(但是所有JAR都可以在其目标文件夹中使用.)

示例:我的结构如下所示:

    • 一个
    • C
    • d

项目C具有依赖项目B.

当我使用"mvn site"构建所有内容时,它会为项目A和B生成所有报告.但在项目C停止,并显示错误消息"无法解析项目B的依赖项".但是项目B已经用"mvn package"构建.即我可以在其目标文件夹中找到项目B的JAR文件.

有没有办法在没有"mvn install"的情况下解决子模块B的依赖关系?(我不想在我的ci服务器上执行此操作.我担心对于具有相同代码库的其他作业可能会有危险.)

更新08/20/12:

根文件夹的POM:

<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>
    <name>Foo</name>
    <groupId>foo</groupId>
    <artifactId>bar</artifactId>
    <version>1.0</version>
    <packaging>pom</packaging>
    <modules>
        <module>parent</module>
    </modules>
</project>
Run Code Online (Sandbox Code Playgroud)

父POM:

<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>
    <name>Foo</name>
    <groupId>foo</groupId>
    <artifactId>parent</artifactId>
    <version>1.0</version>
    <packaging>pom</packaging>
    <modules>
        <module>../bar-a</module>
        <module>../bar-b</module>
        <module>../bar-c</module>
        <module>../bar-d</module>
    </modules>
    [...]
    <reporting>
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>findbugs-maven-plugin</artifactId>
                <version>2.5.1</version>
                [...]
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-pmd-plugin</artifactId>
                <version>2.7.1</version>
                [...]
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-checkstyle-plugin</artifactId>
                <version>2.9.1</version>            
                [...]
            </plugin>
        </plugins>
    </reporting>
</project> …
Run Code Online (Sandbox Code Playgroud)

continuous-integration hudson build maven multi-module

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

maven-ear-plugin不包括jar.xml中的jarModule

我一直在关注maven-ear-plugin网站上的示例,该网站展示了如何将第三方库添加到生成的application.xml中.但是,它似乎没有像我预期的那样工作.类似地,Web模块contextRoot被忽略.

根据文档,我想要做的应该是完全可能的.

可以使用contextRoot参数自定义Web模块的上下文根.

请注意,生成的application.xml中不包含第三方库(即JarModule)(只有ejb-client应包含在java条目中).但是,通过指定includeInApplicationXml标志,可以在生成的application.xml中包含jar依赖项.

在我的application.xml中执行构建时,我有以下输出.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE application PUBLIC
    "-//Sun Microsystems, Inc.//DTD J2EE Application 1.3//EN"
    "http://java.sun.com/dtd/application_1_3.dtd">
<application>
  <display-name>MyApp.EAR</display-name>
  <module>
    <ejb>MyApp.jar</ejb>
  </module>
  <module>
    <web>
      <web-uri>MyApp.war</web-uri>
      <context-root>/MyApp.Web</context-root>
    </web>
  </module>
</application>
Run Code Online (Sandbox Code Playgroud)

从以下maven configuraton(pom.xml).

...
<modelVersion>4.0.0</modelVersion>
<groupId>com.blah</groupId>
<artifactId>MyApp.EAR</artifactId>
<version>1.0</version>
<packaging>ear</packaging>

<build>
    <plugins>
        <plugin>
            <groupId>maven-ear-plugin</groupId>
            <artifactId>maven-ear-plugin</artifactId>
            <version>2.7</version>
            <configuration>
                <applicationName>MyApp</applicationName>
                <modules>
                    <ejbModule>
                        <groupId>com.blah</groupId>
                        <artifactId>MyApp.EJB</artifactId>
                    </ejbModule>
                    <webModule>
                        <groupId>com.blah</groupId>
                        <artifactId>MyApp.Web</artifactId>
                        <contextRoot>MyApp</contextRoot>
                    </webModule>
                    <jarModule>
                        <groupId>org.slf4j</groupId>
                        <artifactId>slf4j-simple</artifactId>
                        <includeLibInApplicationXml>true</includeLibInApplicationXml>
                    </jarModule>
                </modules>
                <archive>
                    <manifestEntries>
                        <WebLogic-Application-Version>${weblogic.version}</WebLogic-Application-Version>
                    </manifestEntries>
                </archive>
            </configuration>
        </plugin>
    </plugins>
</build>

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

ear java-ee maven application.xml maven-ear-plugin

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

是否必须在Jersey webservices中使用@XmlRootElement进行JSON响应?

我的代码实际上包含一个资源类和一个BEan类,它的返回类型是JSON.

资源类

@Path("/json")
public class JSONRetrive {

    @GET
    @Produces(MediaType.APPLICATION_JSON)
    public JSONT getJson(){
        JSONT jsont = new JSONT();
        jsont.setJsont("inr");
        return jsont;
    }
}
Run Code Online (Sandbox Code Playgroud)

/*是否有任何Annotation代表JSON.我是否需要使用任何其他注释.*/

我的班级

//@XmlRootElement
public class JSONT {
private String jsont;

public String getJsont() {
    return jsont;
}

public void setJsont(String jsont) {
    this.jsont = jsont;
}

}
Run Code Online (Sandbox Code Playgroud)

如果我取消注释@XmlRootElement它是否正常工作是否有任何其他替代解决方案

rest web-services jersey

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

如何在没有AOP的情况下为Guice 3.0配置Maven依赖?

我有一个Android Maven项目,并希望在其中使用Google Guice 3.0.

有一个Guice的"No-AOP"版本,它与Android兼容.

如何告诉使用"No-AOP"版本的

更新1(03.05.2013 10:46 MSK):

当我在Google Guice上添加依赖项时,我在build(mvn clean install)期间遇到以下异常:

[INFO] UNEXPECTED TOP-LEVEL EXCEPTION:
[INFO] java.lang.IllegalArgumentException: already added: Lcom/google/inject/Abs
tractModule;
[INFO]  at com.android.dx.dex.file.ClassDefsSection.add(ClassDefsSection.java:12
3)
[INFO]  at com.android.dx.dex.file.DexFile.add(DexFile.java:163)
[INFO]  at com.android.dx.command.dexer.Main.processClass(Main.java:490)
[INFO]  at com.android.dx.command.dexer.Main.processFileBytes(Main.java:459)
[INFO]  at com.android.dx.command.dexer.Main.access$400(Main.java:67)
[INFO]  at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:398)
[INFO]  at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpen
er.java:245)
[INFO]  at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.j
ava:131)
[INFO]  at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java
:109)
[INFO]  at com.android.dx.command.dexer.Main.processOne(Main.java:422)
[INFO]  at com.android.dx.command.dexer.Main.processAllFiles(Main.java:333)
[INFO]  at com.android.dx.command.dexer.Main.run(Main.java:209)
[INFO]  at com.android.dx.command.dexer.Main.main(Main.java:174)
[INFO]  at com.android.dx.command.Main.main(Main.java:91)
[INFO] 1 error; …
Run Code Online (Sandbox Code Playgroud)

java android guice maven-3 maven

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

具有LDAP和数据库角色的Spring Security

在我们的新保险项目中,我正在尝试使用Ldap 实现.

一旦用户在AD中找到,我想在AD上检查用户名/密码.我想从用户表(app授权用户)授权他在数据库中具有访问级别.有人可以提供样品/指出我的资源.

spring spring-security spring-ldap

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

Maven:对不在“资源”下的文本文件使用过滤机制?

我需要自定义一些不在资源下的 XML 文件(特别是,它们在 EAR 的项目 src/main/application 下)。

过滤机制将是完美的,但我的理解(正确?)是它只适用于资源。

有没有办法对 src/main/resources 以外的其他目录中的文件使用过滤?

提前致谢。

ear filtering maven maven-ear-plugin

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

Maven原型中的动态文件名

我和Maven有问题.我试图创建原型,但我现在不知道如何将源文件放到目录中${groupId}/${artifactId}.如果我尝试从此原型创建项目,则文件将隐式存储在${groupId}目录中.看来Maven认为,组ID是包名.但我使用的${groupId}/${artifactId}是包名,所以我需要将源文件存储在${groupId}/${artifactId}目录中.我见过解决方案:将文件放入__artifactId__目录.双下划线应确定一个变量.但是它没有任何效果.变量似乎是空的,但是在源文件中的包名称中成功使用.

有enybody想法,在文件名中使用双下划线时应该使用哪种技巧?

maven maven-archetype

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

原型选择使用m2eclipse

我想使用New Maven Project向导使用原型在Eclipse中创建一个新的Maven项目.在"选择原型"步骤中,我有三个目录可供选择:Nexus Indexer,InternalDefault Local.我不明白这些目录的内容应该来自哪里.如果我点击"配置"按钮,它们都是灰色的,我无法修改它们.

只有Internal目录中列出了任何原型.这些原型来自哪里?它不是来自我的本地Maven存储库,因为组/工件不在其中(并且未列出repo中的原型).

为什么Nexus Indexer列表是空的?我已经阅读了一些Nexus索引需要更新的帖子,但不知道如何更新.这与存储库索引(计划每天更新)不同.

正如您所看到的,我对整个目录业务以及Maven,m2eclipse和Nexus的交互方式有点困惑.任何澄清都是最受欢迎的!

我的设置:

  • Eclipse:Helios Service Release 2(Build id:20110218-0911)
  • Apache Maven 3.0.3
  • m2eclipse:0.12.1.20110112-1712(设置为使用外部Maven安装)
  • Sonatype Nexus™开源版,版本:1.9.0.2

我的本地Maven settings.xml如下所示:

<settings>
  <mirrors>
    <mirror>
      <!--This sends everything else to /public -->
      <id>nexus</id>
      <mirrorOf>*</mirrorOf>
      <url>http://myserver:8080/nexus/content/groups/public</url>
    </mirror>
  </mirrors>
  <profiles>
    <profile>
      <id>nexus</id>
      <!--Enable snapshots for the built in central repo to direct -->
      <!--all requests to nexus via the mirror -->
      <repositories>
        <repository>
          <id>central</id>
          <url>http://central</url>
          <releases><enabled>true</enabled></releases>
          <snapshots><enabled>true</enabled></snapshots>
        </repository>
      </repositories>
     <pluginRepositories>
        <pluginRepository> …
Run Code Online (Sandbox Code Playgroud)

java nexus m2eclipse maven maven-archetype

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

多模块项目中的Maven属性将重置为默认值

我对多模块项目中的属性有疑问.

考虑以下3级项目结构:

project
+- pom.xml (packaging: pom)        //referred to as super-pom
+- module_group
   +- pom.xml (packaging: pom)     //referred to as group-pom
   +- module
      +-pom.xml (packaging: jar)   //referred to as module-pom
Run Code Online (Sandbox Code Playgroud)

在super-pom中,我定义了一个属性修订版,它获取了默认值"unknown".

另外,我声明并使用buildnumber-maven-plugin配置为获取svn修订版并将其放入属性修订版中.

接下来我配置将该maven-jar-plugin属性写入清单.

在模块-pom我声明使用buildnumber-maven-plugin实际执行的.


这一切都在直接构建模块时起作用,即仅执行模块pom.清单包含由buildnumber-maven-plugin控制台中打印的as 报告的修订.

但是,如果我执行super-pom或group-pom,则将版本的默认值写入清单,尽管buildnumber-maven-plugin执行获取并检索正确的版本(它 在运行之前将其打印到控制台maven-jar-plugin).

所以我觉得我在多模块项目中缺少关于属性继承的东西.

有没有人知道这里有什么问题?或者任何人都可以指出我在这些情况下如何实际处理属性的描述(遗憾的是我还没有设法找到一个好的描述)?

更新

我做了一些研究和一些测试运行与调试输出(-X选项),从我到目前为止发现,我认为我的问题如下:

1)在pom解析期间,pom中使用的属性将替换为它们的值.

考虑这个部分pom:

<!-- declare the property default value -->
<properties>
  <revision>default</revision>
</properties>

...

<!-- use the …
Run Code Online (Sandbox Code Playgroud)

maven-2 maven buildnumber-maven-plugin

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