DEV Community

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

Posted on

13 1

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

Image of Timescale

Timescale – the developer's data platform for modern apps, built on PostgreSQL

Timescale Cloud is PostgreSQL optimized for speed, scale, and performance. Over 3 million IoT, AI, crypto, and dev tool apps are powered by Timescale. Try it free today! No credit card required.

Try free

Top comments (0)

Cloudinary image

Video API: manage, encode, and optimize for any device, channel or network condition. Deliver branded video experiences in minutes and get deep engagement insights.

Learn more

👋 Kindness is contagious

Dive into an ocean of knowledge with this thought-provoking post, revered deeply within the supportive DEV Community. Developers of all levels are welcome to join and enhance our collective intelligence.

Saying a simple "thank you" can brighten someone's day. Share your gratitude in the comments below!

On DEV, sharing ideas eases our path and fortifies our community connections. Found this helpful? Sending a quick thanks to the author can be profoundly valued.

Okay