我在pom.xml中使用此代码来创建jar文件.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<excludes>
<exclude>**/log4j.properties</exclude>
</excludes>
<archive>
<manifest>
<mainClass>test.LeanFTest</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)
我收到错误消息:
部署失败:未在POM内部分发中指定存储库元素
更新:
我在pom.xml中添加了另一个插件.
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>test.LeanFTest</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)
它生成一个jar文件,但似乎没有依赖项.
线程"main"中的异常java.lang.NoClassDefFoundError:org/apache/log4j/Logger
项目结构:
C:.
????.idea
? ????libraries
????META-INF
????out
? ????artifacts
? ????Test_LeanFT_jar
????resources
? ????leanftjar
? ????META-INF
????RunResults
? ????Resources
? ????Snapshots
? ????User
????src
? ????main
? ? ????java
? ? ? ????com
? ? ? ? ????myproj
? ? ? ????jar
? ? ? ? …Run Code Online (Sandbox Code Playgroud) 我使用swagger在我的项目中生成Web服务客户端.生成的代码生成一个可以用作Maven lib的库.我已经成功将发布版本部署到我的私有sonatype-nexus中.
我想知道altDeploymentRepository和之间的区别是什么altReleaseDeploymentRepository?mvn deploy如果设置了两个参数,如何选择使用哪个存储库?
正如apache-maven部署文档所说:
altDeploymentRepository:指定应该部署项目工件的备用存储库(除了指定的那些).格式:id :: layout :: url
altReleaseDeploymentRepository:项目具有最终版本时使用的备用存储库.
altSnapshotDeploymentRepository:项目具有快照版本时使用的备用存储库.
到底是什么
当项目有最终版本时.
意思?
我有一个多模块 Maven 项目。父 pom 看起来像这样:
<project>
...
<packaging>pom</packaging>
<modules>
<module>common</module>
<module>a</module>
<module>b</module>
</modules>
</project>
Run Code Online (Sandbox Code Playgroud)
common 构建一个 jar,它作为依赖项添加到其他模块中,如下所示:
<dependency>
<groupId>my.project</groupId>
<artifactId>common</artifactId>
<version>${module.common.version}</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
Modulesa和bSpring Boot 项目具有spotify docker 插件。
我需要能够运行mvn deploy才能让 spotify 插件推送 docker 镜像。
mvn install工作正常,它构建了 docker 图像。但是为了推送它们,当我运行时mvn deploy,它会为common模块抛出错误:
[错误] 无法在项目 common 上执行目标 org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy (default-deploy):部署失败:在 distributionManagement 元素内的 POM 中或在 - 中未指定存储库元素DaltDeploymentRepository=id::layout::url 参数
搜索此错误,此答案建议在该distributionManagement部分中添加存储库 url 。但我不想部署common. 我只想构建它,因此它作为其他模块中的依赖项被注入并部署这些其他模块。我怎样才能做到这一点?
我尝试仅部署a并b使用此命令,但它给出了相同的错误common …
我尝试运行时收到此错误 mvn clean deploy -P PROD
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.5:deploy (default-deploy) on project mysticpaste: Deployment failed: repository element was
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.5:deploy (default-deploy) on project mysticp
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:203)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:148)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:140)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:314)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:151)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:445)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:168)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:132)
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.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)
Caused by: org.apache.maven.plugin.MojoExecutionException: Deployment failed: repository element was …Run Code Online (Sandbox Code Playgroud) 我有一个 Maven 项目。在 pom 中,我声明了组 ID、工件 ID、版本。
我将 maven-deploy-plugin 声明为构建插件,目标是 deploy:deploy-file。
然后我以相同的目标从 eclipse 启动了 maven,wuth -Durl 声明为 jvm arg。
Maven 构建失败,说我没有提供 groupid、artifactid、package、file not defined。
为什么它不从 pom 中获取这些值?
一定有办法告诉插件使用 pom 值,对吗?因为 maven 人肯定相信 DIE-DRY - 重复是邪恶的,不要重复自己吗?否则,我可以创建一个与其 pom 相矛盾的人工制品分布?
为什么,插件不知道我希望部署项目,包括源代码而不仅仅是单个 jar 或 pom?
为什么,插件不知道它应该只查看 pom artifactid 声明来获取 groupid 和 artifactid。
咆哮: