Jenkins在Mac上使用Maven构建JavaFX本机安装程序时遇到问题。
我的目标是在Mac上自动创建JavaFX应用程序的本机安装程序(创建* .dmg和* .pkg文件)。
我使用Jenkins设置了Mac服务器,并能够通过Jenkins任务构建项目(它从GIT获取源并调用class MSG
{
private:
char* data;
public:
std::size_t size;
std::string target_id;
MSG( const MSG& msg ) : MSG( msg.getData(), msg.size, msg.target_id )
{ };
MSG( char* sourceData, std::size_t sourceSize, const std::string& id )
{
data = new char[sourceSize];
std::copy_n( sourceData, sourceSize, data );
size = sourceSize;
target_id = id;
};
MSG( ) : MSG( ( char* ) nullptr, 0, UNDEFINED )
{ };
~MSG( )
{
delete[] data;
data = 0;
};
MSG& operator=(MSG& that)
{
swap(*this, that);
return *this;
}
MSG& operator=(const MSG& other)
{
if (this != &other) // (1)
{
// get the new data ready before we replace the old
std::size_t newSize = other.size;
char* newArray = newSize ? new char[newSize]() : nullptr; // (3)
std::copy(other.getData(), other.getData() + newSize, newArray); // (3)
// replace the old data (all are non-throwing)
delete [] data;
size = newSize;
data = newArray;
target_id = other.target_id;
}
return *this;
}
};
)。
我还可以通过从ssh控制台调用mvn clean deploy source:jar -e -U -T 1C
手动构建* .pkg本机安装程序。
当我尝试从Jenkins运行上述任务(以构建本机安装程序)时出现问题,最后 javafx-maven-plugin:8.8.3:native 插件说:
10:00:32 [INFO]由于配置错误'无法确定指定的运行时目录中存在哪个JRE / JDK,正在跳过'DMG安装程序'。
10:00:32解决建议:将运行时目录指向JDK / JRE根目录,该根目录的Contents / Home目录或JDK的Contents / Home / jre目录之一。
我试图在〜/ .bash_profile 中设置环境变量JAVA_HOME,JRE_HOME,JDK_HOME,JAVA_JRE,并设置为〜/ .profile (当我重新登录-我想这里没有问题)。
mvn clean install -f ./javafx-gui/pom.xml -Pbuild-distribution jfx:native
除此之外,我想不出其他任何改变。
注意:我不是Mac用户,我通常在Linux上工作
日志文件:
Server009:~ jenkins$ cat .bash_profile
export JAVA_HOME=$(/usr/libexec/java_home)
export JAVA_JRE=/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre/
export JDK_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/
export JRE_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre/
答案 0 :(得分:0)
所以我找到了解决方案-Jenkins提供了它自己的JDK。因此,此修复程序将JDK组合框设置为(system)
。或在管道脚本中删除“ jdk'JDK1.8'” 。
该问题是由于将Jenkins任务设置并工作的地方复制造成的。
tools {
maven 'M3.5.4'
jdk 'JDK1.8' # delete this
}