在没有pom.xml的情况下运行mvn exec:exec

时间:2018-01-23 23:51:51

标签: maven

我正在尝试找到一种方法来从maven存储库中获取库并运行它。我想通过命令行定义所有内容并忽略pom。我正在努力追随:

 mvn exec:exec -Dexec.mainClass="org.main.Class" -Dspring.profiles.active=test

当我尝试使用pom.xml运行它时,它开始获取pom中描述的所有依赖项。我真的不想要。当我在没有pom.xml的情况下运行它时,它会显示Goal requires a project to execute but there is no POM in this directory. Please verify you invoked Maven from the correct directory.有没有办法在没有pom的情况下运行它或者至少忽略它?

我的目标只是从没有来源或罐子的任何地方开始我的应用程序。

2 个答案:

答案 0 :(得分:2)

一种可能的解决方法是:

  • 先得到罐子
  • 然后执行它

为此,maven plugin dependency:get很方便,并且可以在没有任何pom.xml /项目的情况下执行(因此可以从任何文件夹中执行)

mvn org.apache.maven.plugins:maven-dependency-plugin:2.1:get -DrepoUrl=https://dtp.intramundi.com/nexus/repository/maven-central/ -Dartifact=<group>:<artifact>:<version>

将工件复制到您选择的文件夹后,像dependency:copy-dependencies这样的插件可以读取您刚刚获得的工件的pom.xml,将所述依赖项复制到您选择的同一文件夹中。 / p>

最后,java -cp . yourArtifact.jar可以执行它。

我意识到这不仅仅是&#34; exec:exec&#34;,而且它从pom.xml获取依赖关系,但至少在这里:

  • 第一步不需要任何pom.xml
  • 第二步需要您要执行的工件的pom.xml,并且在运行时可能需要这些依赖项:如果您想要exec& #39;你的神器。

答案 1 :(得分:0)

不。不可能。事实上,Mvn Exec是Maven Pluging致力于执行作为maven-nature项目的一部分。如果您需要执行Jar结果,为什么不使用var fruits = [ "Apple", "Banana", "Apricot", "Bilberry" ] var count = [3, 5, 0, 2]; var merge = []; fruits.forEach((val, i) => { if (count[i]) { merge.push({ [val]: count[i] }) }; }); console.log(merge);