我希望解决这个问题而不张贴在这里,但已经花了5个多小时来解决什么。
我有一个在maven下构建的scala应用程序,我使用jenkins管道构建并部署到centos服务器。
文件夹是这样的:
- /src
- - /main
- - - /resources
- - - - MANIFEST.MF, application.conf, prod.conf
- - - /scala
- - - - /app/core - etc, app folders
- - - - /Module.scala which extends App
我认为问题之一可能是我没有任何模块包(作为根类)。
import akka._
object Module extends App with Logger {
//
}
我试着挪动我的手 Module
至 /app
文件夹并为其提供了一个包。(正在更新) Main-Class
在舱单上)
在pom.xml中,我使用maven antrun plugin、maven shade plugin和新的scala maven plugin(来自net.alchim31),而不是maven scala plugin(来自org.scala tools),因为最后一个在尝试将compile设置为目标时给我一个错误(exit error 1)。
内部 maven-shade-plugin
我设置了主类:
<transformer
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<manifestEntries>
<Main-Class>Module</Main-Class> // or app.Module (with package)
</manifestEntries>
</transformer>
忘了说,所有插件都封装在prod配置文件中。因此,构建jar的命令是 mvn package -P prod
在localhost上,无论是否为module object声明了package,这两个选项的运行都非常完美,而且我可以从命令行运行jar而不会出错。
问题是我在jenkins上构建应用程序时:
stage ('Deploy to artifactory') {
steps {
script {
def server = Artifactory.server 'artifactory-name'
def rtMaven = Artifactory.newMavenBuild()
rtMaven.tool = 'Maven 3.6.3'
rtMaven.resolver releaseRepo: 'repo-name', snapshotRepo: 'repo-name', server: server
rtMaven.deployer releaseRepo: 'projects', snapshotRepo: 'projects', server: server
rtMaven.deployer.deployArtifacts = false
def buildInfo = Artifactory.newBuildInfo()
timeout(time: 10, unit: 'MINUTES') {
rtMaven.run pom: 'pom.xml', goals: 'package -P prod', buildInfo: buildInfo
rtMaven.deployer.deployArtifacts buildInfo
}
}
}
}
我不明白为什么。我有另一个应用程序,建立在相同的结构和工作良好。
在下面的照片中,您可以看到在localhost上生成的包有41个文件夹和 Module.class
存在,而在右边,jenkins生成的包只包含没有“我的项目”文件夹的库(只有“资源”文件夹存在) application.conf
以及 prod.conf
).
暂无答案!
目前还没有任何答案,快来回答吧!