小编Jea*_*evy的帖子

为什么Maven JAR插件不包含一些资源?

我有一个企业应用程序,我正在从Ant构建转换为Maven.它几乎完全转换; 这是我需要解决的最后一件事.应用程序打包为一个EAR文件,其中包含两个WAR,并具有一个JAR模块,该模块提供应用程序的所有核心功能.

我正在使用Freemarker模板库来生成应用程序发送的自动电子邮件的消息正文.Freemarker需要将*.ftl模板文件放在类路径上,因为这是一个不是特定于一个WAR或另一个WAR的核心应用程序功能,所以它需要在JAR中.

定义JAR的Maven模块具有以下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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <relativePath>../../pom.xml</relativePath>
        <groupId>com.company.project</groupId>
        <artifactId>projectName</artifactId>
        <version>1.8.0</version>
    </parent>

    <artifactId>core</artifactId>
    <packaging>jar</packaging>
    <name>Core Application</name>

    <profiles>
       <!-- snip -->
    </profiles>

    <dependencies>
       <!-- snip -->
    </dependencies>

    <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
                <includes>
                    <include>**/*.ftl</include>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
            </resource>
        </resources>
        <plugins>
            <!-- snip -->
        </plugins>
    </build>
</project>
Run Code Online (Sandbox Code Playgroud)

*.ftl文件位于src/main/resources/template /,其中一些位于template /中的子目录中.src/main/resources中还有其他文件 - 一些.properties和一些.xml,一些位于根目录,一些位于目录结构下.

当我在这个模块(或父模块)上运行包阶段时,作为构建过程的一部分创建的目标/ classes目录包含模板目录,该模板目录又包含所有*.ftl,*.xml和*具有适当目录结构的.properties文件.如果我手动JAR这个目录,一切都很完美.

这里变得奇怪而且我迷路了:当maven-jar-plugin创建JAR时,它包含XML和属性文件,但是JAR中完全没有模板目录,并且其内容无处可寻.

如您所见,我尝试明确地包括**/*.ftl.它没有任何区别; 我可以排除整个"包含"标记,我得到完全相同的行为.

我正在使用Maven 3.0.5和maven-jar-plugin 2.4.

maven-3 maven maven-jar-plugin

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

maven是否将ear-element从"defaultjavabundledir"更改为"defaultlibbundledir",如果有的话?

在POM文件中,我发现了一个使用"defaultJavaBundleDir"的"maven-ear-plugin"配置,但似乎"defaultLibBundleDir"是正确的(根据架构和各种文档).

Maven POM架构是4.0.0版.

这是旧版本的遗留物吗?我无法找到对此更改的解释,并希望确保我们可靠地使用正确的表示法.

maven-2 maven-ear-plugin

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

Maven原型:产生过多的选择

根据maven 网站和网上的一些教程,mvn archetype:generate可以选择大约36,而选择15是快速入门.在我设置Nexus之前,它一直在这样工作.现在我可以选择358,默认为97(我无法从我的dos提示中读取描述).这两种选择都一样吗?为什么现在我得到这么多选择.如果我必须更改我的存储库设置,如何纠正它.我的maven版本是

Apache Maven 2.2.1 (r801777; 2009-08-06 15:16:01-0400)
Java version: 1.6.0_16
Java home: C:\Program Files\Java\jdk1.6.0_16\jre
Default locale: en_US, platform encoding: Cp1252
OS name: "windows vista" version: "6.0" arch: "amd64" Family: "windows"
Run Code Online (Sandbox Code Playgroud)

谢谢.

339: remote -> parallelj-archetype (ParallelJ is a Java framework for parallel computing. It provides flow modeling and execution.)
340: remote -> parancoe-pluginarchetype (-)
341: remote -> parancoe-webarchetype (-)
342: remote -> liftweb-archetype-blank (Archetype - blank project for liwftweb)
343: remote -> liftweb-archetype-hellolift (Archetype - …
Run Code Online (Sandbox Code Playgroud)

java maven maven-archetype

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

如何为Eclipse创建Web应用程序Maven原型?

我有一个工作或大部分工作的POM,它可以获取所有我正在编写Facelets应用程序的JAR.我正在使用m2eclipse.当我导入新Maven创建的应用程序时,它会干预并且或多或少地按预期进行,但是,它不像动态Web项目那样,当我尝试运行它时,它不提供Run As - > Run on Server选项.

我已经研究了其他可以在服务器上运行的Maven生成的Eclipse项目,它们可以工作(但是没有设置我想要的JAR组合).例如,这个工作,但它没有我想要的JAR:

mvn archetype:generate -DarchetypeArtifactId = maven-archetype-webapp\-DgroupId = package-name -DartifactId = project-name

我是否需要创建一个自定义原型artifactId模仿...- DarchetypeArtifactId = maven-archetype-webapp ...我在上面的命令中看到,如果是这样,怎么样?

或者它仅仅是该原型设置的文件系统的功能?我看到我生成的项目(webapp1)......

webapp1
|-- src
|   `-- main
|       |-- java
|       |-- resources
|       `-- webapp
|           `-- WEB-INF
`-- target
    `-- classes`

...与使用maven-archetype-webapp生成的内容有不同的内容,但我不知道如何强制mvn eclipse:清除eclipse:eclipse生成它(或者这是否告诉Eclipse这是一个Web应用程序,它应该设置为运行方式 - >在服务器上运行).

simpleWeb
|-- src
|   `-- main
|       |-- java
|       |   `-- com
|       |       `-- mytutorial
|       |-- resources
|       |   `-- com …

eclipse maven-2 maven-archetype

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

使用maven-failsafe-plugin在Maven中运行JUnit4 Test Suite

我有一个JUnit 4测试套件,包含了一些在他们需要的运行顺序测试类(我们的集成测试需要按照一定的顺序来运行).

如果我在没有任何配置的情况下使用maven-failsafe-plugin,它将运行测试但不按正确顺序运行.但是,如果我将插件设置为运行测试套件,则不会运行任何测试.

是否可以使用failsafe插件运行测试套件?如果是的话,我哪里出错!!

代码如下:

@RunWith(Suite.class)
@SuiteClasses({ 
    TestCase1.class,
    TestCase2.class, 
       ...
    TestCaseN.class,
})
public class IntegrationSuite {
    //Do Nothing.
}
Run Code Online (Sandbox Code Playgroud)

从pom.xml:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-failsafe-plugin</artifactId>
    <version>2.9</version>
    <configuration>
        <includes>
            <include>IntegrationSuite.java</include>
        </includes>
    </configuration>
    <executions>
        <execution>
            <id>integration-test</id>
            <goals>
                <goal>integration-test</goal>
            </goals>
    </execution>
    <execution>
        <id>verify</id>
        <goals>
            <goal>verify</goal>
        </goals>
    </execution>
</executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)

谢谢 :)

junit4 maven maven-failsafe-plugin

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

通过Maven将Mercurial工作目录变更集ID(例如(838cb9c0367e))注入属性文件中?

我们使用Maven作为构建版本,使用Mercurial作为我们的变更集.虽然我们的软件已经处理了主要版本,但我们真的希望能够知道Mercurial变更集用于构建运行我们软件的任何服务器.

有没有人知道在Maven中获取Mercurial中工作目录的变更集并将其放入属性文件中的方法,以便我们可以在我们的应用程序中的某个地方显示它,当sys管理员对当前运行的版本进行"健全性检查"时?

versioning mercurial maven buildnumber-maven-plugin

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

Maven 3:无法执行目标org.apache.maven.plugins:maven-archetype-plugin:2.2:generate

我正在尝试使用maven测试

mvn archetype:generate -DgroupId=org.sonatype.mavenbook -DartifactId=quickstart -Dversion=1.0-SNAPSHOT -DpackageName=org.sonatype.mavenbook -DarchetypeGroupId=org.apache.maven.archetypes -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.0 -DinteractiveMode=false
Run Code Online (Sandbox Code Playgroud)

几分钟后,系统显示我:

Downloading: http://repo.maven.apache.org/maven2/org/apache/maven/archetype/archetype-catalog/2.2/archetype-catalog-2.2.pom
Downloaded: http://repo.maven.apache.org/maven2/org/apache/maven/archetype/archetype-catalog/2.2/archetype-catalog-2.2.pom (2 KB at 4.4 KB/sec)
Downloading: http://repo.maven.apache.org/maven2/org/apache/maven/archetype/archetype-models/2.2/archetype-models-2.2.pom
Downloaded: http://repo.maven.apache.org/maven2/org/apache/maven/archetype/archetype-models/2.2/archetype-models-2.2.pom (3 KB at 5.8 KB/sec)
Downloading: http://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-utils/1.5.8/plexus-utils-1.5.8.pom
Downloaded: http://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-utils/1.5.8/plexus-utils-1.5.8.pom (8 KB at 17.0 KB/sec)
Downloading: http://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus/2.0.2/plexus-2.0.2.pom
Downloading: http://repo.maven.apache.org/maven2/org/apache/ant/ant-parent/1.8.1/ant-parent-1.8.1.pom
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 30:36.874s
[INFO] Finished at: Tue Feb 07 15:59:39 BRST 2012
[INFO] Final Memory: 5M/15M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-archetype-plugin:2.2:generate (default-cli) on project …
Run Code Online (Sandbox Code Playgroud)

java maven-plugin maven-3 maven-archetype

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

将Perforce scm配置为maven项目以获取最新的更改列表

我正在将项目迁移到Maven,因为我们习惯于通过Perforce SCM存储库中的最新更改编号引用我们的构建,我希望能够提取此信息

我试图通过以下资源配置Maven scm插件:

首先,我不明白如何使它工作,所以如果有人有一个完整的例子,我会很高兴,在我这边我尝试添加我的pom:

<scm>
    <connection>
        scm:perforce:localhost:1666://depot/
        <my_project>
            /
            <version>
    </connection>
    <developerConnection>
        scm:perforce:localhost:1666:/depot/
        <my_project>
            /
            <version>
    </developerConnection>
    <url>http://somerepository.com/view.cvs</url>
</scm>
...
<plugins>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-scm-plugin</artifactId>
        <version>1.6</version>
        <dependencies>
            <!-- P4Maven -->
            <dependency>
                <groupId>com.perforce</groupId>
                <artifactId>p4maven</artifactId>
                <version>[2011,2012)</version>
            </dependency>
        </dependencies>
        <configuration>
            <connectionType>//depot/proto/kernel/kernel/04.00/maven2</connectionType>
            <username>my local username</username>
            <password>xxxxxx</password>
            <includes>**</includes>
        </configuration>
    </plugin>
</plugins>
Run Code Online (Sandbox Code Playgroud)

这导致我:

[INFO] --- maven-scm-plugin:1.6:checkout (default-cli) @ kernel ---
mars 27, 2012 9:54:08 AM org.sonatype.guice.bean.reflect.Logs$JULSink warn
Avertissement: Error injecting: org.apache.maven.scm.provider.svn.svnexe.SvnExeScmProvider
java.lang.NoClassDefFoundError: org/apache/maven/scm/command/info/InfoScmResult
Run Code Online (Sandbox Code Playgroud)

肯定忘了什么,我会再次阅读说明,看看我想念的,但是如果有人知道的话......

无论如何,我的问题是:是否值得尝试?我没有在scm插件的可用操作中看到任何可以帮助我获取最后更改信息并将其集成到引用构建号中的内容.我应该为此开发自己的插件吗?

提前致谢.

perforce maven maven-scm-plugin

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

使用maven-javadoc-plugin和Maven 3生成多个javadoc报告

我们使用自定义doclet从自定义javadoc标记生成报告,并使用Maven网站插件和javadoc插件生成此报告和常规Java API文档.

POM的部分如下所示:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-javadoc-plugin</artifactId>
    <reportSets>
        <reportSet>
            <id>html</id>
            <reports>
                <report>javadoc</report>
            </reports>
        </reportSet>
        <reportSet>
            <id>custom_report</id>
            <configuration>
                ...
            </configuration>
            <reports>
                <report>javadoc</report>
            </reports>
        </reportSet>
    </reportSets>
</plugin>
Run Code Online (Sandbox Code Playgroud)

在Maven 2下,这很好用,但是在Maven 3中只生成了一个报告,它是POM中指定的最后一个报告(通过交换reportSet元素来确定).

经过一些实验,我发现如果我将常规报告的目标从"javadoc"改为"test-javadoc",那么我从两个报告集中得到了输出.所以问题似乎是,使用Maven 3我无法生成两个使用相同javadoc-plugin目标的报告.

这是一个错误,还是有一些我错过的会员?我移离行家-Javadoc的插件安装reportingconfiguration该网站插件如在描述http://maven.apache.org/plugins/maven-site-plugin-3.0-beta-3/maven-3.html,至徒劳无功.我正在使用Maven 3.0.4,maven-site-plugin 3.0-beta-3和maven-javadoc-plugin 2.8.1.

谢谢!

maven-3 maven-javadoc-plugin maven-site-plugin

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

增加IntelliJ java堆大小

经过大量的研究,我无法得到结果.我是IntelliJ IDEA的新手,我使用11.1.2版本.我使用3个模块(3个eclipse项目),并在每个模块中设置了Preferences - > Compiler - > Java Compiler,其中包含以下值:

最大堆大小(MB): 512

其他命令行参数:

-target 1.6 -XX:MaxPermSize = 512M -Xms256m -Xmx512m -XX:PermSize = 512m

并且还配置了Maven runner的VM Options,如下所示:

-XX:PermSize =1024米-XX:MaxPermSize参数=512米-Dfile.encoding = UTF-8 -Duser.language = EN

检查跳过测试...

我还更改了应用程序 - > IntelliJ IDEA 12 - >目录 - > Info.plist:

      <key>VMOptions</key>
      <string>-ea -Xverify:none -Xbootclasspath/a:../lib/boot.jar</string>

      <key>VMOptions.i386</key>
      <string>-Xms256m -Xmx512m -XX:MaxPermSize=512m -XX:ReservedCodeCacheSize=128m</string>

      <key>VMOptions.x86_64</key>
      <string>-Xms256m -Xmx512m -XX:MaxPermSize=512m -XX:ReservedCodeCacheSize=128m -XX:+UseCompressedOops</string>

      <key>WorkingDirectory</key>
Run Code Online (Sandbox Code Playgroud)

但是在做了这些更改之后,IntelliJ向我展示了右下角分配的200-250 MB的堆空间......有什么问题?

javac intellij-idea maven-3 maven

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