'cp' se comporta de maneira diferente depois de 'mvn clean'

0

Então, estou trabalhando em um script de construção para um projeto Java e não executo mvn clean durante o desenvolvimento local. Por isso, criei um sinalizador para os desenvolvedores -k , que define a variável $DEV_BUILD to 1 .

function build_war {
   if [ "$DEV_BUILD" -ne 1 ]; then
      mvn clean
   fi
   cd "$PROJECT_HOME"
   # Copy over static web files to ROOT
   mkdir -p "$WAR_HOME"

   cp -r js "$WAR_HOME/js"
   rm -r "$WAR_HOME/js/src/com"
   ...
}

Quando executo o script sem o sinalizador -k , o conteúdo de js acaba dentro do comando $WAR_HOME/js e rm . Mas se eu executar o script com o sinal -k , há um diretório js dentro do outro e o comando rm falhará.

Alguém sabe por que isso pode estar ocorrendo?

Editar

Com base no comentário de @Kusalananda, adicionei algumas linhas ao script para verificar se o diretório existia apenas para ter certeza.

if [ ! -f "$WAR_HOME/js" ]; then
  echo "js doesn't exist!!"
fi

cp -r js...

Recebo a mensagem "não existe" com e sem o sinalizador -k .

    
por codehitman 16.04.2018 / 18:31

1 resposta

2

Quando você usa

cp source destination

e destination é um diretório existente, então source será colocado nesse diretório.

Portanto, cp se comporta de maneira aparentemente diferente porque o diretório js em $WAR_HOME não foi removido antes de ser copiado novamente com o mesmo caminho de destino.

    
por 16.04.2018 / 18:36