javascript

git

java

python

git-remote

c++

github

django

c#

reactjs

c++-faq

git-checkout

generator

coroutine

spring-mvc

reflection

javascript-objects

html5

analytics

node.js

在Maven项目之间共享测试资源

有一个明确的解决方案,可以使用maven-antrun-plugin插件的test-jar目标在maven项目之间共享通用测试代码(请参见此处)。

我需要对测试资源做类似的事情,特别是,我希望在测试过程中项目A的测试资源在项目B的类路径中可用。

对于项目A,需要声明:

<!-- Package and attach test resources to the list of artifacts: -->
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-antrun-plugin</artifactId>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>run</goal>
            </goals>
            <configuration>
                <tasks>
                    <jar destfile="${project.build.directory}/test-resources.jar">
                        <fileset dir="${project.basedir}/test-resources" />
                    </jar>
                </tasks>
            </configuration>
        </execution>
    </executions>
</plugin>
<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>build-helper-maven-plugin</artifactId>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>attach-artifact</goal>
            </goals>
            <configuration>
                <artifacts>
                    <artifact>
                        <file>${project.build.directory}/test-resources.jar</file>
                        <type>jar</type>
                        <classifier>test-resources</classifier>
                    </artifact>
                </artifacts>
            </configuration>
        </execution>
    </executions>
</plugin>

在项目B中,它将是正常依赖项:

<dependency>
    <groupId>myproject.groupId</groupId>
    <artifactId>myartifact</artifactId>
    <version>1.0-SNAPSHOT</version>
    <classifier>test-resources</classifier>
    <scope>test</scope>
</dependency>

问题:是否在所有情况下都有效? 是否可以在没有maven-antrun-plugin的情况下打包资源(使用更多的“轻量级”插件)?

trans by 2020-08-12T10:34:38Z

如何通过bash脚本从ant / maven中检测到构建错误?

我正在编写一个bash脚本来自动化构建过程。 有两个主要的构建块,一个是蚂蚁任务,一个是普通的mvn clean install。当这两个构建过程中的任何一个发生构建错误时,我都想做些事情。

问题是,这些构建将不时包含测试失败或错误,但最终结果是成功的。 而且我相信这些过程返回的状态码($?)应该为0,无论构建失败还是成功,我都可能错了。

那么,对于我的脚本而言,检测最终结果(构建失败/成功)而不从中间构建捕获错误信息(测试错误等)的最佳方法是什么?

trans by 2020-08-12T01:22:43Z

持续集成-在构建机器上清除Maven本地存储库

在CI构建服务器上,本地Maven存储库会重复(几天后)填充文件系统。在这种情况下,其他人正在采取什么策略来削减本地存储库?-最大

trans by 2020-08-11T18:07:34Z

在Maven中,如何运行位于src / test / java下的类?

我继承了一个代码库:)

在src / test / java /下,有一个文件需要运行(我需要运行它的public static void main(String[] args),而不是其中的-Dexec.classpathScope="test"方法)。

我最接近的是:

mvn -e exec:java -Dexec.mainClass="com.me.packagex.RunFile" -Dexec.classpathScope="test"

但这失败了,这似乎是因为RunFile想要使用src / main / java / com / me / packagex /下的类(请注意,/ main /,而不是/ test /)。 此处的文件与RunFile位于同一包中,即“ package com.me.packagex;”。

如果删除-Dexec.classpathScope="test",则根本找不到RunFile。 好像我需要给它两个作用域,但它不接受“测试,编译”。

我从(继承人)那里继承过来的人曾经从Eclipse运行它。 我需要一种从命令行运行它的方法。

我希望对此有清楚的解释。

TYVM,


这是有希望的。 帕斯卡(Pascal),我已经尝试了您的示例,但对我来说不起作用。

尽管现在我看着它-找不到Demo,而不是找到Dog。

Apache Maven 2.2.1 (rdebian-1)
Java version: 1.6.0_18
Java home: /usr/lib/jvm/java-6-openjdk/jre
Default locale: en_GB, platform encoding: UTF-8
OS name: "linux" version: "2.6.32-25-generic" arch: "i386" Family: "unix"

$ mvn -e exec:java -Dexec.mainClass="com.stackoverflow.Demo" -Dexec.classpathScope="test"

[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] An exception occured while executing the Java class. com.stackoverflow.Demo

[INFO] ------------------------------------------------------------------------
[INFO] Trace
org.apache.maven.lifecycle.LifecycleExecutionException: An exception occured while executing the Java class. com.stackoverflow.Demo
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:719)
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeStandaloneGoal(DefaultLifecycleExecutor.java:569)
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:539)
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:387)
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:348)
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:180)
        at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:328)
        at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:138)
        at org.apache.maven.cli.MavenCli.main(MavenCli.java:362)
        at org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java:60)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
        at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
        at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)
        at org.codehaus.classworlds.Launcher.main(Launcher.java:375)
Caused by: org.apache.maven.plugin.MojoExecutionException: An exception occured while executing the Java class. com.stackoverflow.Demo
        at org.codehaus.mojo.exec.ExecJavaMojo.execute(ExecJavaMojo.java:346)
        at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:490)
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:694)
        ... 17 more
Caused by: java.lang.ClassNotFoundException: com.stackoverflow.Demo
        at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
        at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:284)
        at java.lang.Thread.run(Thread.java:619)
trans by 2020-08-11T12:06:47Z

Maven:将WAR复制到Tomcat的webapps目录

我可以添加什么内容到pom.xml中,它将生成的WAR文件从目标目录复制到Tomcat的webapps目录中?

trans by 2020-08-11T02:30:01Z

maven 2-将协议缓冲区集成到Maven2构建中

我正在一个现有的,相当原始的Maven 2项目中使用协议缓冲区进行实验。 当前,每次需要更新生成的源代码时,我都会调用Shell脚本。 显然这很麻烦,因为我希望在每次构建之前自动生成源。 希望不要诉诸可耻的黑客。

因此,我的问题有两个:

  1. 远景:是否有Maven 2的“协议缓冲区插件”可以自动实现上述目标? Google Code上有一个分支,其作者似乎对实现这种插件有所帮助。 不幸的是,它还没有通过代码审查,也没有被合并到protobuf主干中。 因此,该插件的状态未知。

  2. 可能更现实:缺少一个实际的插件,我还应该如何从Maven 2构建中调用protoc? 我想我可以将现有的Shell脚本连接到antrun调用或类似的调用中。

个人经验受到高度赞赏。

trans by 2020-08-07T09:32:22Z

java-如何将源上传到本地Maven存储库

假设我在本地计算机上有一个Maven 2 Java项目。 我构建了项目mvn eclipse:eclipse -DdownloadSources文件,并使用mvn install将其推送到我的本地Maven存储库中。

题:

如何强制Maven将项目源mvn eclipse:eclipse -DdownloadSources推送到本地仓库?

如果在开发新项目时将上述项目用作依赖项,这将很有用,并且可以使用2993697164934775775808功能。

trans by 2020-08-02T13:46:14Z

Maven 2-Gradle:使第3方jar可用于本地gradle存储库

目前,我正在测试Gradle作为Maven的替代产品。 在我的项目中,有一些第3方jar,在任何(Maven)存储库中都没有。 现在的问题是,如何管理将这些jar安装到本地.gradle存储库中。 (如果可能,我不想使用本地Maven存储库,因为Gradle应该独立运行。)目前,由于缺少jar,我遇到了很多异常。 在Maven中,运行install命令非常简单。 但是,我在Google上搜索类似于Maven install命令的操作失败。 有人知道吗?

trans by 2020-07-26T09:26:44Z

java-使用Maven从文件名中删除版本号

我在maven中有5个模块的项目。 现在,当我进行“ mvn全新安装”时,它将生成一个耳朵,其中包含两个罐子,一个war和一个来自其他模块的sar。

所有文件名都包含版本,例如projectx-ear-2.0.0.ear,projectx-client-2.0.0.jar等。

我需要重命名其中一个jars和最后一个耳朵,以省略文件名中的版本。 它看起来应该像这样:

projectx-ear.ear
|
+-- projectx-client.jar
|
+-- projectx-misc-2.0.0.jar
|
+-- projectx-sar-2.0.0.sar
|
\-- projectx-web-2.0.0.web

现在,我正在使用以下插件进行构建:Maven编译器插件和Maven发行插件

实现我期望的结果的最佳方法是什么?

trans by 2020-07-25T03:56:59Z

java-将Maven文件过滤到WEB-INF

我试图对驻留在WEB-INF目录中的应用程序上下文文件添加一些过滤。

我在/ src / main / resources文件夹中有要过滤的文件(xmlgateway-context.xml)。

我在src / main / filters文件夹中有属性文件(config-e05.properties)

我将POM设置如下:

<!-- environment profiles -->
<profiles>
 <profile>
  <id>e04</id>
  <properties>
   <targetenv>e04</targetenv>
  </properties>
 </profile>
 <profile>
  <id>e05</id>
  <properties>
   <targetenv>e05</targetenv>
  </properties>
 </profile>
</profiles>

<!-- build settings (filtering) -->
<build>
 <filters>
  <filter>src/main/filters/config-${targetenv}.properties</filter>
 </filters>
 <resources>
  <resource>
   <targetPath>WEB-INF</targetPath>
   <filtering>true</filtering>
   <directory>src/main/resources</directory>
  </resource>
 </resources>
</build>

这将正确安装mvn,但是当我打开输出war文件时,我期望文件xmlgateway-context.xml位于/ WEB-INF目录中,但最终位于文件夹/ WEB-INF / classes / WEB中 -INF。

我该如何将该文件放入正确的位置。

或者,我可以将应用程序上下文放到其他位置并在那里引用它。

trans by 2020-07-23T23:27:12Z

您知道的所有Maven原型目录的URL是什么?

Maven原型是“模板”,通过它们您可以快速生成给定框架或项目类型的运行示例。 我正在尝试编译当前在网络上活动的所有Maven原型目录的列表。

从有关目录文件的Maven文档中:

存储有关原型的知识 在目录中。

目录是xml文件。

原型插件捆绑在一起 内部目录。 这个是 默认使用。

原型插件可以使用目录 从本地文件系统和HTTP 连接。

到目前为止,我已经收集了确实发布目录的存储库列表,但是希望了解是否有人知道更多:

mvn archetype:generate
-DarchetypeCatalog=local
-DarchetypeCatalog=remote
-DarchetypeCatalog=http://repo.fusesource.com/maven2
-DarchetypeCatalog=http://cocoon.apache.org
-DarchetypeCatalog=http://download.java.net/maven/2
-DarchetypeCatalog=http://myfaces.apache.org
-DarchetypeCatalog=http://tapestry.formos.com/maven-repository
-DarchetypeCatalog=http://scala-tools.org
-DarchetypeCatalog=http://www.terracotta.org/download/reflector/maven2/

链接到相同:1)FuseSource2)茧3)Java.net4)MyFaces5)挂毯6)Scala目录7)兵马俑目录

您会注意到,如果存储库实际上发布了原型目录(上述所有内容都在做),您将获得一个UI提示,其中包含在archetype-catalog.xml中找到的所有选择。例如:

mvn archetype:generate -DarchetypeCatalog=http://scala-tools.org

[INFO] No archetype defined. Using maven-archetype-quickstart (org.apache.maven.archetypes:maven-archetype-quickstart:1.0)
Choose archetype:
1: http://scala-tools.org -> scala-archetype-simple (A simple scala project)
2: http://scala-tools.org -> lift-archetype-blank (A blank/empty liftweb project)
3: http://scala-tools.org -> lift-archetype-basic (A basic liftweb project (with DB, css, ...))
Choose a number:  (1/2/3):

例如,如果要直接查看Scala目录文件,则可以浏览到[http://scala-tools.org/archetype-catalog.xml]

但是,如果存储库未提供archetype-catalog.xml,则正如PascalT所说的那样,您需要事先知道名称(不太方便)并将其传递给命令行参数。

trans by 2020-07-23T05:31:11Z

java-IDEA JetBrains IntelliJ-在“ make”上编译错误,但使用Maven编译时可以正常运行,并且在类fi中没有IntelliJ报告的错误

所以我在IntelliJ中有一个Maven模块(模块A)。 最近,我将一些类从其中移到了另一个新的Maven模块(模块B)中,并为其添加了依赖项。 完成此操作后,我还修改了其中一个移动类(现在位于模块B中)的方法的签名。

我重新导入了poms,以便IntelliJ拾取依赖项更改,并确保受影响的文件的所有Java导入都再次正确。 现在,当我尝试运行我的webapp(取决于两个模块)时,在模块A中的类中收到编译错误,并在模块B中调用该类的修改方法。

错误消息基本上是在说该方法不存在,但相信旧方法仍然存在! 我单击“ make”错误,然后将我带到模块A的类中的该行,调用了已修改的方法...奇怪的是,IntelliJ知道在文件中可以使用。 即该方法没有像通常会出现编译错误那样用红色下划线,但是类文件名是:(

我从命令行使用“ mvn install”(还安装了模块B)对其进行了编译,并且都成功了。 我已经删除了模块A和模块B的目标中的classes目录,并且使IntelliJ的缓存无效并重新启动了...仍然在发生...任何想法吗?

trans by 2020-07-22T10:24:28Z

java-避免maven-jar的最佳方法是什么?

我正在使用其他插件(ant4eclipse)来存储我的文件。 避免执行maven-jar插件的最佳方法是什么?

  • 我试图删除<skip>true</skip>
  • 我试图<skip>true</skip>
  • I tried to <skip>true</skip>

没有工作

trans by 2020-07-13T14:50:17Z

java-如何处理Maven和Intellij之间的Junits中的相对路径

我有一个带有模块的Maven项目

/myProject
pom.xml
    /myModule
    pom.xml
       /foo
       bar.txt

考虑一下myModule中的Junit,它需要打开bar.txt,使用maven的basedir是模块目录。

所以打开文件bar.txt:

  new File("foo/bar.txt")

当您在intellij中启动相同的junit时执行myProject/foo/bar.txt BUT时,此方法效果很好,因为Intellij在项目目录而不是模块目录中设置了basedir,所以失败。

Intellij尝试打开myProject/foo/bar.txt而不是myProject/myModule/foo/bar.txt

有办法解决吗?

trans by 2020-07-13T10:39:58Z

Maven:与项目JAR一起打包依赖项吗?

我希望Maven将项目与运行时依赖项一起打包。 我希望它使用以下清单创建一个JAR文件:

.....
Main-Class : com.acme.MainClass
Class-Path : lib/dependency1.jar lib/dependency2.jar
.....

并创建以下目录结构:

target
|-- ....
|-- my-project.jar
|-- lib
    |-- dependency1.jar
    |-- dependency2.jar

含义是,我希望主JAR排除任何依赖关系,并且希望将所有传递性依赖关系复制到“ lib”子目录中。 有任何想法吗?

trans by 2020-07-12T23:44:05Z

maven 2-maven2:从WAR中排除目录

我试图这样做以从我的WAR文件中排除整个目录($ {basedir} / src / main / webapp / webscripts),但失败了。 怎么了?

这不起作用:

<configuration>
   <webResources>
      <resource>
       <directory>${basedir}/src/main/webapp/webscripts</directory>
       <excludes>
        <exclude>**/*.*</exclude>
       </excludes>
      </resource>
   </webResources>
</configuration>

这个也是:

<configuration>
   <webResources>
      <resource>
       <directory>${basedir}/src/main/webapp</directory>
       <excludes>
        <exclude>**/webscripts</exclude>
       </excludes>
      </resource>
   </webResources>
</configuration>

有人可以帮忙吗?

trans by 2020-07-12T03:02:32Z

java-INIT = RUNSCRIPT和相对路径的问题

我将Maven约定用于源路径(src / main src / test),并且我的sql脚本位于src / main / resources / scripts中。

我想用H2内存运行我的应用程序,我想使用jdbc url初始化我的数据库:

database.url=jdbc:h2:mem:;INIT=RUNSCRIPT FROM 'src/main/resources/scripts/create.sql';

我的问题是,此相对路径(src / main / ...)不起作用,并且如果init = runscript命令没有任何作用,则H2不会崩溃。

有人知道我应该使用什么方法来完成这项工作吗?

谢谢

trans by 2020-07-09T15:51:56Z

java-简单Servlet应用程序的Maven原型

一个简单的Servlet(2.5)Web应用程序是否有Maven 2原型?

trans by 2020-07-05T21:51:25Z

Maven 2-如何显示可用目标列表?

我对Maven并不陌生,我经常发现自己想看看目标方面的实际情况。

因此,是否有一个命令列出了所有可用的目标,例如 给定前缀?

trans by 2020-07-03T13:25:24Z

java-在mvn命令中指定pom.xml和其他项目的混合目标

我有多个问题。

  1. 我可以在mvn命令中指定pom.xml吗?
  2. 我可以在当前项目上执行mvn命令时混合另一个项目的目标吗?

    例如:mvn clean -otherproject comple-otherproject instal-otherproject compile-thisproject

我可以使用多个mvn命令执行此操作,但是可以在单个maven命令中执行此操作。

trans by 2020-07-02T06:20:13Z

1 2 3 4 5 6 7 8 9 下一页 共9页