Я создал новый скрипт, который должен не только установить Maven + добавить его в bin, но и поднять, если вы используете Ubuntu в качестве гостя VirtualBox, а затем пытается установить существующую папку «.m2» и maven, которая может / может не содержит существующих настроек.
Maven остается прежним, если он работает в Windows или Unix, поэтому вы можете использовать один и тот же Maven между ними, это ваша настройка VirtualBox ...
PS. Обратите внимание на сборку сценариев, которые могут монтировать / отключать общие папки из / usr / local / bin:)
#!/bin/bash
#Author: Yucca Nel http://thejarbar.org
#Will restart system
PATH="/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/bin:."
export PATH
#Modify these variables as needed...
tempWork=/tmp/work
defaultStartScript=/etc/init.d/rc.local
defaultMaven=3.0.3
locBin=/usr/local/bin
mavenUsrLib=/usr/lib/maven
mkdir -p $mavenUsrLib
mkdir -p $HOME/.m2
read -p "Please [Enter] full path name of your local startup script ($defaultStartScript is the default). Please
make sure on this before providing a value by consulting documentation for your system:" locStartScript
locStartScript=${locStartScript:-$defaultStartScript}
read -p "Please [Enter] Maven Version ($defaultMaven is default):" mavenVersion
mavenVersion=${mavenVersion:-$defaultMaven}
if [ ! -f $locStartScript ]
then
echo "The file you provided could not be found. Remember to include the full path and try again. Exiting in 7 secs..."
sleep 7
exit 1
fi
mkdir -p /$tempWork
cd /$tempWork
sudo wget http://mirrors.powertech.no/www.apache.org/dist//maven/binaries/apache-maven-$mavenVersion-bin.tar.gz
tar -zxvf ./*
#Move it to a more logical location
sudo mv -f ./apache-maven-$mavenVersion $mavenUsrLib/
#If you have Maven on Windows and use VirtualBox, you can set up the maven to be a virtualbox shared folder.
#The name must match the name used below (ignore if irrelevant to you).
if [ -f /sbin/mount.vboxsf ]
then
sudo /sbin/umount $HOME/.m2
sudo /sbin/umount $mavenUsrLib
sudo /sbin/mount.vboxsf .m2 $HOME/.m2
sudo /sbin/mount.vboxsf maven $mavenUsrLib
fi
if mountpoint -q $HOME/.m2 && mountpoint -q $mavenUsrLib
then
#Add it to the start script to automate process...
sudo sed -ie '$d' $locStartScript
if ! grep "sudo /sbin/mount.vboxsf .m2 $HOME/.m2" $locStartScript
then
echo "sudo /sbin/mount.vboxsf .m2 $HOME/.m2" | sudo tee -a $locStartScript
fi
if ! grep "sudo /sbin/mount.vboxsf maven $mavenUsrLib" $locStartScript
then
echo "sudo /sbin/mount.vboxsf maven $mavenUsrLib" | sudo tee -a $locStartScript
fi
echo "exit 0" | sudo tee -a $locStartScript
sudo chmod +x $locStartScript
#Create a mount and unmount script file...
rm -rf $tempWork/*
echo '#!/bin/bash' > $tempWork/maven-mount.sh
echo "sudo /sbin/mount.vboxsf .m2 $HOME/.m2" >> $tempWork/maven-mount.sh
echo "sudo /sbin/mount.vboxsf maven $mavenUsrLib" >> $tempWork/maven-mount.sh
echo "echo 'mounted maven'" >> $tempWork/maven-mount.sh
echo "exit 0" >> $tempWork/maven-mount.sh
echo '#!/bin/bash' > $tempWork/maven-umount.sh
echo "sudo umount $HOME/.m2" >> $tempWork/netbeans-umount.sh
echo "sudo umount $mavenUsrLib" >> $tempWork/netbeans-umount.sh
echo "echo 'unmounted maven'" >> $tempWork/maven-mount.sh
echo 'exit 0' >> $tempWork/maven-umount.sh
#Script for mounting ALL VirtualBox shared solders....
#If there isn't one create one...
if [ ! -f $locBin/mount-all-from-host.sh ]
then
echo '#!/bin/bash' > $tempWork/mount-all-from-host.sh
echo "sudo /sbin/mount.vboxsf .m2 $HOME/.m2" | sudo tee -a $tempWork/mount-all-from-host.sh
echo "sudo /sbin/mount.vboxsf maven $mavenUsrLib" | sudo tee -a $tempWork/mount-all-from-host.sh
echo "exit 0" | sudo tee -a $tempWork/mount-all-from-host.sh
#Otherwise if there is one, but no mount, add one...
elif ! grep "sudo /sbin/mount.vboxsf .m2 $HOME/.m2" $locBin/mount-all-from-host.sh
then
sudo sed -ie '$d' $locBin/mount-all-from-host.sh
echo "sudo /sbin/mount.vboxsf .m2 $HOME/.m2" | sudo tee -a $locBin/mount-all-from-host.sh
echo "exit 0" | sudo tee -a $locBin/mount-all-from-host.sh
elif ! grep "sudo /sbin/mount.vboxsf maven $mavenUsrLib" $locBin/mount-all-from-host.sh
then
sudo sed -ie '$d' $locBin/mount-all-from-host.sh
echo "sudo /sbin/mount.vboxsf maven $mavenUsrLib" | sudo tee -a $locBin/mount-all-from-host.sh
echo "exit 0" | sudo tee -a $locBin/mount-all-from-host.sh
fi
#Script for unmounting ALL VirtualBox shared folders...
#If there isn't one create one...
if [ ! -f $locBin/umount-all-from-host.sh ]
then
echo '#!/bin/bash' > $tempWork/umount-all-from-host.sh
echo "sudo umount -a -t vboxsf" | sudo tee -a $tempWork/umount-all-from-host.sh
echo "echo 'unmounted all VirtualBox shared folders'" | sudo tee -a $tempWork/umount-all-from-host.sh
echo "exit 0" | sudo tee -a $tempWork/umount-all-from-host.sh
fi
sudo chmod +x $tempWork/*
sudo mv -f $tempWork/*.sh $locBin/
rm -rf $tempWork
fi
sudo ln -f -s $mavenUsrLib/apache-maven-$mavenVersion/bin/* /usr/bin/
sudo rm -rf $tempWork
sudo reboot
exit 0
После изнурительного поиска ответов я узнал, что проблема, с которой я столкнулась, связана с «пересказом». Google, если вы никогда не слышали об этом.
Моя настройка телевизора (скорее всего) не обеспечивает чрезмерного сканирования, когда видеовход считается «компьютером». Из-за возраста этого конкретного телевизора единственным способом для видеовхода считать «компьютерный вход» является то, что видеовход поступает в телевизор через кабель VGA. Я использую вход HDMI в ТВ - таким образом, выполняется принудительное выполнение сверхсканирования.
xrandr имеет довольно удобное решение для этой проблемы:
xrandr --output DVI-0 --set underscan on xrandr --output DVI-0 --set "underscan hborder" 47 --set "underscan vborder" 26 [!d3 ]
Измените «DVI-0» на любой ваш подключенный выход (используйте xrandr, чтобы выяснить, что это такое), а затем отредактируйте номера 47 и 26 для любых номеров, которые работают для вашего конкретного дисплея.
После изнурительного поиска ответов я узнал, что проблема, с которой я столкнулась, связана с «пересказом». Google, если вы никогда не слышали об этом.
Моя настройка телевизора (скорее всего) не обеспечивает чрезмерного сканирования, когда видеовход считается «компьютером». Из-за возраста этого конкретного телевизора единственным способом для видеовхода считать «компьютерный вход» является то, что видеовход поступает в телевизор через кабель VGA. Я использую вход HDMI в ТВ - таким образом, выполняется принудительное выполнение сверхсканирования.
xrandr имеет довольно удобное решение для этой проблемы:
xrandr --output DVI-0 --set underscan on xrandr --output DVI-0 --set "underscan hborder" 47 --set "underscan vborder" 26
Измените «DVI-0» на любой ваш подключенный выход (используйте xrandr, чтобы выяснить, что это такое), а затем отредактируйте номера 47 и 26 для любых номеров, которые работают для вашего конкретного дисплея.
После изнурительного поиска ответов я узнал, что проблема, с которой я столкнулась, связана с «пересказом». Google, если вы никогда не слышали об этом.
Моя настройка телевизора (скорее всего) не обеспечивает чрезмерного сканирования, когда видеовход считается «компьютером». Из-за возраста этого конкретного телевизора единственным способом для видеовхода считать «компьютерный вход» является то, что видеовход поступает в телевизор через кабель VGA. Я использую вход HDMI в ТВ - таким образом, выполняется принудительное выполнение сверхсканирования.
xrandr имеет довольно удобное решение для этой проблемы:
xrandr --output DVI-0 --set underscan on xrandr --output DVI-0 --set "underscan hborder" 47 --set "underscan vborder" 26
Измените «DVI-0» на любой ваш подключенный выход (используйте xrandr, чтобы выяснить, что это такое), а затем отредактируйте номера 47 и 26 для любых номеров, которые работают для вашего конкретного дисплея.