将Maven应用程序复制到带有ant的Raspberry Pi时,AccessDeniedException

问题描述 投票:1回答:1

我正在尝试通过ant在Raspberry Pi上运行我的maven程序。完全公开,我基本上没有使用Raspberry,Linux和Ant的经验。我正在关注此guide,并且代码是从那里开始的。

build.xml的代码

<?xml version="1.0" encoding="UTF-8"?>
<project name="Der_HFBot" default="remote-run" basedir="."
    xmlns:artifact="antlib:org.apache.maven.artifact.ant">

    <!-- Setup RASPBERRY PI properties -->
    <property name="raspberrypi" value="cencored" />
    <property name="raspberryfolder" value="~" />
    <property name="username" value="cencored" />
    <property name="password" value="cencored" />

<!--     <path id="maven-ant-tasks.classpath" path="${ant.libs.dir}/maven-ant-tasks-2.1.3.jar" /> -->



<path id="maven-ant-tasks.classpath" path="lib/maven-ant-tasks-2.1.3.jar" />
<typedef resource="org/apache/maven/artifact/ant/antlib.xml" uri="antlib:org.apache.maven.artifact.ant" classpathref="maven-ant-tasks.classpath" />


    <typedef 
        resource="org/apache/maven/artifact/ant/antlib.xml"
        uri="antlib:org.apache.maven.artifact.ant"
        classpathref="maven-ant-tasks.classpath" />

    <!-- Add maven install target to be run before deploy -->

    <target name="maven-install"> 
        <artifact:mvn pom="pom.xml"> 
            <arg value="install"/> 
        </artifact:mvn> 
    </target> 

    <!-- Locate the prokect jar and transfer via scp to RASPBERRY PI -->
    <target name="transfer" depends="maven-install">
        <first id="jars">

            <fileset dir="target" includes="**/*-SNAPSHOT-jar-with-dependencies.jar" />
        <!--<fileset dir="target" includes="**/*.jar" /> -->
        </first>
        <pathconvert pathsep="," property="jar.path" refid="jars" />
        <basename file="${jar.path}" property="jar.filename" />
        <echo>">>> Found application ${jar.path}"</echo>

        <echo>">>> Copying application to ${raspberrypi}:${raspberryfolder}/${jar.filename}"</echo>
        <scp 
            localfile="${jar.path}" 
            todir="${username}:${password}@${raspberrypi}:${raspberryfolder}" 
            trust="true" />

    </target>

    <!-- Run java -->
    <target name="remote-run" depends="transfer"> 
        <echo>">>> Starting ${raspberrypi}:${raspberryfolder}/${jar.filename}"</echo>

        <sshexec 
            host="${raspberrypi}" 
            username="${username}" 
            password="${password}" 
            trust="true" 
            failonerror="true" 
            usepty="true" 
            command="java -jar ${jar.filename}" />
    </target>

    <!-- Run java in debug mode and keep waiting for execution -->
    <target name="remote-debug" depends="transfer">   
        <echo>">>> Starting ${raspberrypi}:${raspberryfolder}/${jar.filename} in debug mode"</echo>
        <sshexec 
            host="${raspberrypi}" 
            username="${username}" 
            password="${password}" 
            trust="true" 
            failonerror="true" 
            usepty="true" 
            command="java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=8000,suspend=y -jar ${jar.filename}" />
    </target>
</project>

该项目成功构建,但是在传输时失败,并显示以下消息:

transfer:
     [echo] ">>> Found application "
     [echo] ">>> Copying application to censored_IP:~/Der_HFBot"
      [scp] Connecting to censored_IP:22

BUILD FAILED
C:\Users\Paddy\Desktop\Google Drive\Telegram Bots\Der_HFBot\build.xml:47: java.nio.file.AccessDeniedException: C:\Users\Paddy\Desktop\Google Drive\Telegram Bots\Der_HFBot

Total time: 3 seconds

我尝试以管理员身份运行Eclipse并将项目移至云端硬盘之外的文件夹。

编辑:$ {jar.path}似乎没有返回路径?它应该回显“ Found application $ {jar.path}”,但在控制台中它会返回“ Found application”。它确实尝试访问./target目录。

java maven ant raspberry-pi access-denied
1个回答
0
投票

AccessDeniedException通常来自缺乏文件许可权。在程序本身和所有其他适用的文件上都使用chmod 777 filename,这将使所有内容都可以在这些文件上读取/写入/执行,因此请确保您具有安全的开发环境。

© www.soinside.com 2019 - 2024. All rights reserved.