DEV Community

Cover image for Install Nexus Repository Manager in Linux Centos7, Deploy and Use 'artifacts
Sadhan Sarker
Sadhan Sarker

Posted on

Install Nexus Repository Manager in Linux Centos7, Deploy and Use 'artifacts

Step 1: Login to your Linux server and update the yum packages. Also install required utilities.

yum update -y
sudo yum install wget -y
java -version
sudo yum install java-1.8.0-openjdk.x86_64 -y
Enter fullscreen mode Exit fullscreen mode

Step 2: Download the latest nexus. You can get the latest download links fo for nexus from here.

cd /opt
sudo wget -O latest-unix.tar.gz https://download.sonatype.com/nexus/3/latest-unix.tar.gz
tar -xvzf latest-unix.tar.gz
sudo mv nexus-3* nexus
mv sonatype-work nexusdata
ls -lh
Enter fullscreen mode Exit fullscreen mode

Step 3: Set User/Permissions and Configurations

useradd --system --no-create-home nexus
chown -R nexus:nexus /opt/nexus
chown -R nexus:nexus /opt/nexusdata
Enter fullscreen mode Exit fullscreen mode

Edit /opt/nexus/bin/nexus.vmoptions file

vi /opt/nexus/bin/nexus.vmoptions
Enter fullscreen mode Exit fullscreen mode
-Xms2703m
-Xmx2703m
-XX:MaxDirectMemorySize=2703m
-XX:+UnlockDiagnosticVMOptions
-XX:+LogVMOutput
-XX:LogFile=../nexusdata/nexus3/log/jvm.log
-XX:-OmitStackTraceInFastThrow
-Djava.net.preferIPv4Stack=true
-Dkaraf.home=.
-Dkaraf.base=.
-Dkaraf.etc=etc/karaf
-Djava.util.logging.config.file=etc/karaf/java.util.logging.properties
-Dkaraf.data=../nexusdata/nexus3
-Dkaraf.log=../nexusdata/nexus3/log
-Djava.io.tmpdir=../nexusdata/nexus3/tmp
-Dkaraf.startLocalConsole=false
Enter fullscreen mode Exit fullscreen mode

Edit nexus.rc file.

vi /opt/nexus/bin/nexus.rc
Enter fullscreen mode Exit fullscreen mode

Uncomment run_as_user parameter and add new value.

run_as_user="nexus"
Enter fullscreen mode Exit fullscreen mode

We need to modify the nexus-default.properties file.

vi /opt/nexus/etc/nexus-default.properties
Enter fullscreen mode Exit fullscreen mode

Change application-host=0.0.0.0 and port application-host=9081

Configure the open file limit of the nexus user.

vi /etc/security/limits.conf
Enter fullscreen mode Exit fullscreen mode

Add the below values to the file.

nexus - nofile 65536
Enter fullscreen mode Exit fullscreen mode

Step 4: Set Nexus as a System Service

Create the Systemd service file in /etc/systemd/system/.

sudo vi /etc/systemd/system/nexus.service
Enter fullscreen mode Exit fullscreen mode

Add the following contents to the unit file.

[Unit]
Description=Nexus Service
After=syslog.target network.target

[Service]
Type=forking
LimitNOFILE=65536
ExecStart=/opt/nexus/bin/nexus start
ExecStop=/opt/nexus/bin/nexus stop
User=nexus
Group=nexus
Restart=on-failure

[Install]
WantedBy=multi-user.target
Enter fullscreen mode Exit fullscreen mode

Manage Nexus Service, Execute the following command to add nexus service to boot.

systemctl daemon-reload
systemctl enable nexus.service
systemctl start nexus.service
Enter fullscreen mode Exit fullscreen mode

Monitor the log file.

tail -f /opt/nexusdata/nexus3/log/nexus.log
Enter fullscreen mode Exit fullscreen mode

Check the running service port.

netstat -tunlp | grep 9081
Enter fullscreen mode Exit fullscreen mode

Show default login password.

cat /opt/nexusdata/nexus3/admin.password
Enter fullscreen mode Exit fullscreen mode

Deploy and Use Artifacts in Spring Boot Project

Create or Edit this ~/.m2/settings.xml file:

vi ~/.m2/settings.xml
Enter fullscreen mode Exit fullscreen mode

Update contents of the file.

<settings xmlns="http://maven.apache.org/SETTINGS/1.2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.2.0 http://maven.apache.org/xsd/settings-1.2.0.xsd">

  <!--  unblock so that we can download artifacts from nexus repo  -->
  <mirrors>
    <mirror>
      <id>maven-default-http-blocker</id>
      <mirrorOf>dummy</mirrorOf>
      <name>Dummy mirror to override default blocking mirror that blocks http</name>
      <url>http://0.0.0.0/</url>
    </mirror>
  </mirrors>


  <!--nexus server configuration-->
  <servers>
    <server>
      <id>nexus</id>
      <username>admin</username>
      <password>19e36q29-1e09-42ce-af29-4f74563a7467</password>
    </server>
  </servers>

</settings>
Enter fullscreen mode Exit fullscreen mode

Deploy jar or artifact to nexus server

  1. Now create a maven project. Open pom.xml file, and add this content inside project tag.
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">

  <!-- ...other  -->

  <!--  deploy libs to nexus repository -->
  <distributionManagement>
    <repository>
      <id>nexus</id>
      <url>http://119.168.0.0:9081/repository/sadhan</url>
      <!--<name>Nexus Releases</name>-->
    </repository>
    <snapshotRepository>
      <id>nexus</id>
      <url>http://119.168.0.0:9081/repository/sadhan</url>
      <!--<name>Nexus Snapshot</name>-->
    </snapshotRepository>
  </distributionManagement>

</project>
Enter fullscreen mode Exit fullscreen mode

Now hit the following command to deploy jar to nexus repository.

mvn deploy        
mvn deploy -e        
mvn deploy -e release

mvn deploy -DaltDeploymentRepository=nexus::default::http://119.168.0.0:9081/repository/sadhan
Enter fullscreen mode Exit fullscreen mode

Use and download jar/artifact from nexus server

  1. Now pull the jar file from nexus repository.

Makes sure ~/.m2/setting.xml file copied properly.

Now open pom.xml file and add this upload dependency inside dependencies tag.

<dependency>
  <groupId>com.revesoft</groupId>
  <artifactId>olm</artifactId>
  <version>0.0.1</version>
</dependency>
Enter fullscreen mode Exit fullscreen mode

Then add this below content inside project tag.

  <!--to use nexus repositories we need that -->
  <repositories>
    <repository>
      <id>nexus</id>
      <url>http://119.168.0.0:9081/repository/sadhan/</url>
      <!--<name>Nexus Releases</name>-->
    </repository>
  </repositories>
Enter fullscreen mode Exit fullscreen mode

Using CLI, we can download the jar file from nexus repository.

mvn dependency:resolve -DremoteRepositories=nexus::default::http://119.168.0.0:9081/repository/sadhan 
Enter fullscreen mode Exit fullscreen mode

Note: Here id nexus is the same as in ~/.m2/settings.xml file. so use same it to download the jar file.

Optional

Upload blob file to nexus repository.

curl -v --user 'admin:admin123' --upload-file ./test.png http://localhost:9081/repository/documentation/test.png
Enter fullscreen mode Exit fullscreen mode

Congratulations

I hope we learn something exciting about Nexus. Thanks for time & passion. Feel free to ask me anything.

Say Hi to me on Twitter, Linkedin, and Medium where I keep on sharing interesting updates.

References

Oldest comments (0)