Skip to content

Sonatype Blog
Syndicate content
State-of-the-Art Build Production for the Modern Software Enterprise
Updated: 3 hours 49 min ago

Maven training in Europe

Tue, 07/27/2010 - 14:00

Sonatype is excited to announce that we will be offering Maven & Nexus Virtual Training during European business hours starting in August.  Seats will fill up quickly, so be sure to book your training course today!

  • MVN-101 Maven Mechanics
  • Tuesday, August 10, 2010 – Wednesday, August 11, 2010 2:00pm – 5:00pm Central European Summer Time (GMT+2)
  • MVN-101 Maven Mechanics provides a full understanding of the Maven Project Object Model (POM), the Maven life-cycle, plug-ins and goals, multi-module Maven projects, and much more. It is a two-day virtual training course. For more details click here.
  • MVN-201 Development Infrastructure Design
  • Monday, August 30, 2010 – Tuesday, August 31, 2010 1:00pm – 5:00pm Central European Summer Time (GMT+2)
  • MVN-201 is for the advanced user that has a strong familiarity with the structure of the Maven POM & Maven multi-module project. Its topics cover advanced multi-module project architecture, enforcing standards with the Enforcer plug-in, installing/configuring a repository manager, as well as a continuous integration server. It is a two-day virtual training course. For more details click here.

Wondering if MVN-201 is a good use of your time and money? Check out what one of our training participants had to say about it here.

You can register online at our Sonatype Store. Please don’t hesitate to contact us if you have any questions or if you would like a custom course outside of the dates listed on our website.   A custom course for your organization does require a minimum of ten students. You can reach us at info@sonatype.com.

 
Categories: Companies

Developer Onboarding webinar this week

Mon, 07/26/2010 - 14:16

There are only a few days left to register for Sonatype’s next  Maven Studio for Eclipse webinar.  This webinar is an introduction to Maven Studio for Eclipse’s Developer Onboarding capabilities.

How much time and money are you wasting on getting new developers up to speed on a project? 

Developers sacrifice days to the inefficient process of configuring a new development environment every time they begin a new project or set up a new workstation. Maven Studio for Eclipse’s Developer Onboarding cuts the configuring time from multiple days to minutes. Developer Onboarding allows an organization to standardize and capture development environment configuration in a single location, enabling developers to start coding with a single mouse click.

The webinar takes place on Thursday July 29 at 6:00am PDT. It will be led by Blaine Mincey, Senior Systems Engineer at Sonatype. Although this webinar is free, registration is required. We look forward to you joining us this Thursday!

 
Categories: Companies

Register for Maven Studio free webinar

Wed, 07/21/2010 - 14:00

Sonatype is holding another session in the series of Maven Studio for Eclipse webinars.

This webinar is an introduction to Maven Studio for Eclipse’s Developer Onboarding capabilities. Developers sacrifice days to the inefficient process of configuring a new development environment every time they begin a new project or set up a new workstation. Maven Studio for Eclipse’s Developer Onboarding cuts the configuring time from multiple days to minutes. Developer Onboarding allows an organization to standardize and capture development environment configuration in a single location, enabling developers to start coding with a single mouse click.

The webinar takes place on Thursday July 29 at 6:00am PDT.  It will be led by Blaine Mincey, Senior Systems Engineer at Sonatype.  Although this webinar is free, registration is required.  We look forward to you joining us next week!

 
Categories: Companies

Sonatype at Eclipse Day, August 2010

Mon, 07/19/2010 - 14:00

This August Sonatype will be presenting at Eclipse Day hosted by Google in Mountain View, California.  Each year Google hosts an Eclipse Day and puts together an agenda that includes Eclipse and Google related topics.  This year there will be presentations that feature Android, Helios, GWT, EGit, Linux Tools, Eclipse 4.0, EMF, XText and more.

Sonatype founder Jason van Zyl will be presenting on next generation development infrastructure with Maven, M2Eclipse, Nexus and Hudson.  This presentation will show how to employ best practices when using these tools individually as well as together, as a powerful set.

All development organizations eventually converge on a set of tools to reduce costs, lower onboarding time, and leverage knowledge in strong communities to create standard processes. To this end we see in many organizations the emergence of a standard development stack consisting of Maven, M2Eclipse, Nexus & Hudson. Sonatype itself leverages this stack on a daily basis and this discussion will focus not only on the tools individually, but how they can work together to create a best practices approach to building and delivering your software in your organization.

Eclipse Day takes place on August 26, 2010 in Mountain View, California.  For more information please visit the Sonatype events page.  We hope to see you there!

 
Categories: Companies

Google’s GWT 2.0.4 Available on Maven Central (via Nexus OSS)

Mon, 07/19/2010 - 13:47

Sonatype is happy to announce that Google Web Toolkit 2.0.4 jars are now available in the Maven Central repository.  The Google Web Toolkit blog explains this move in more detail:

Better maven support has been frequently requested on the issue tracker and mailing list, and this is a first step in that direction. In the future, Google will publish GWT releases to maven central as part of the release process.

The GWT 2.0.4 jars currently in the repository include gwt-user, gwt-dev, and gwt-servlet.    To publish these artifacts in the Maven Central repository, Google publishes artifacts to Nexus OSS, the Open Source oss.sonatype.org repository.   You can see the Google-specific repository on this server here.   Releases are staged to this Google repository on oss.sonatype.org and then subsequently released and synchronized to the Maven Central repository.

Configuring the GWT Plugin

To start developing with GWT, take a look at the “Automatic Mode Setup” section on the GWT Maven plugin’s Setup instructions.   Before last week, the only way to develop a GWT application with the latest version of GWT was to download the SDK to your workstation and then use systemPath dependencies or a custom task to publish artifacts to your local repository.    Today, you can just point your Maven project’s pom.xml at the correct version of gwt-servlet and gwt-user and Maven will grab the necessary native libraries from Central.

This doesn’t just make GWT development easier and more straightforward for people already using the tool, it will make it much easier for developers to start using GWT.   When you publish your project’s artifacts to the Maven Central repository you make it easier for people to adopt your technology.   Maven Central is the “dial tone” for most developers, and if you put it on Central, they can access it without having to download an SDK or configure a build system.   Maven Central just works.

Nexus OSS is the fastest, most efficient way to publish artifacts to Maven Central, and Sonatype has made this service available to any open source project that needs to publish artifacts.   If you work with an open source project or a company which publishes open source libraries, read the Sonatype Nexus OSS Repository Guide to get started.

 
Categories: Companies

Maven Studio for Eclipse webinar recording now available

Fri, 07/16/2010 - 14:00

If you missed our latest Maven Studio for Eclipse webinar, not to worry.  You can find the webinar recording here.  Sonatype has an on-going series of free webinars to introduce and familiarize Maven users with our latest software updates and features.  To find out when the next webinar will be taking place go to our webinar homepage.

Webinar instructors are industry-leading experts in the field, and are eager to pass on best practices for Sonatype products, such as Maven Studio for Eclipse.

The next Maven Studio for Eclipse webinar will be held on July 29, 2010, lead by Sonatype’s Blaine Mincey.

 
Categories: Companies

Sonatype’s latest newsletter now available

Wed, 07/14/2010 - 14:00

Sonatype’s July newsletter is now available.  Catch up on all of the latest software updates, webinars, and presentations.

This newsletter covers the release of Nexus 1.7.0, Sonatype at JavaOne and JavaZone, as well as ways you can connect with the Sonatype team.

What’s New in Nexus 1.7.0

Sonatype is happy to announce the availability of Nexus 1.7. We’ve cut a new release for both Nexus Open Source and Nexus Professional. With this release, Nexus Open Source gains the following features:

  • Improved, drill down artifact search interface
  • Repository groups can contain both repositories and other repository groups

To read the full newsletter, click here.

 
Categories: Companies

Maven Studio for Eclipse webinar tomorrow

Tue, 07/13/2010 - 18:15

It’s not too late to sign up for tomorrow’s free webinar on Maven Studio for Eclipse.

Join Sonatype’s Blaine Mincey Wednesday at 10:30am PDT for the next installment of our MSE webinars.  This webinar will cover the Developer Onboarding feature of MSE.

Get ahead of the competition and boost efficiency by getting new developers productive in just minutes.

This webinar is an introduction to Maven Studio for Eclipse’s Developer Onboarding capabilities. Developers sacrifice days to the inefficient process of configuring a new development environment every time they begin a new project or set up a new workstation. Maven Studio for Eclipse’s Developer Onboarding cuts the configuring time from multiple days to minutes. Developer Onboarding allows an organization to standardize and capture development environment configuration in a single location, enabling developers to start coding with a single mouse click.

This webinar is free to attend, but registration is required.  To sign up click here.

 
Categories: Companies

The Elephant in the Room: Developer Onboarding

Tue, 07/13/2010 - 08:00

How long does it take for you get a new developer in the door, sitting at a desk, productively coding?   How long?  A few days, multiple weeks?  If you are developing enterprise systems, the answer is probably closer to a week than a day.   A developer has to download a large, daunting list of tools, configure  source control, and understand an often highly customized build system.

This particular inefficiency is the proverbial “elephant in the room” because you have to actively ignore how much time a team of ten or a hundred developers spends installing, reinstalling, tweaking, experimenting with, and arguing over different development environments. We’ve automated almost every other aspect of the enterprise, but the developers are still hand-crafting custom workstations.

An Acceptable Inefficiency

When Sonatype was doing research for Maven Studio for Eclipse we followed a few programmers through the process of onboarding.  From start the finish, the worst case took a week and a half and the best case took less than a day.  The one thing in common with almost all of the onboarding processes we witnessed were poor or nonexistent documentation and a reliance on “word-of-mouth” infrastructure configuration.   A new developer would show up on Day One, fill out some HR forms, and then be thrown at a new workstation with nothing more than an Operating System and a Mail client.   It would be up to him to figure out what to download and how to configure his development environment.

Manager: Welcome aboard.  Here’s your desk, now make sure to ask around within the group to find out what version of Eclipse we’ve standardized on.   Don’t worry, we haven’t added you to the schedule for at least a week or two.  That’s just how long it takes people to install everything, checkout all the code, and start contributing.

In the industry I’ve been working in, this is the norm.   It takes days or weeks to come up to speed on a set of new tools, and you usually have to tease out information from a group of engineers who might not even be using the same tools or versions of source control.   Even in environments focused on efficiency, installing all the software components that comprise a development environment still takes a surprising amount of time.

Maven Studio for Eclipse: Developer Onboarding

At Sonatype, we’ve suffered through this same inefficiency ourselves.  Setting up a workspace to develop Nexus Pro or m2eclipse usually took a few days start to finish.   Because of this, we created a developer onboarding tool called Maven Studio for Eclipse to dramatically reduce the amount of time required to setup a developer workstation.  With this new tool, a new programmer who starts working on the Nexus project can get productive in a few minutes with all of the Eclipse plugins, project source code, and build infrastructure she needs preconfigured and ready to use.

Using Maven Studio for Eclipse, a build engineer can configure a custom Eclipse distribution and then publish Eclipse configuration to a new version of Nexus:  Nexus Team Edition.  Nexus Team Edition is a version of Nexus optimized for proxying P2 repositories and Eclipse Update Sites and designed to interact with our professional Eclipse product: Maven Studio for Eclipse.

When you use the Developer Onboarding feature of Maven Studio for Eclipse, a setup process that would have taken a few days is condensed into an automated process which takes a few minutes.    Eclipse components, project configuration, and source code is all automatically downloaded during a process we call “Codebase Materialization”.   Build engineers can configure an Eclipse environment once, publish this configuration to Nexus Team Edition and distribute a simple URL to a team of developers.   Developers then click on a link and walk through a simple wizard to materialize a workspace on a local machine.

Maven Studio for Eclipse is already saving Sonatype a considerable amount of time.  If you are interested in saving time and learning more about Maven Studio for Eclipse or if you would like to take the product for a test drive, contact us for more information at: info@sonatype.com.    You can also download the latest version of the Sonatype m2eclipse book and read three new chapters on “Maven Studio for Eclipse”.

 
Categories: Companies

Multi-level Staging and Build Promotion with Nexus Pro 1.7

Mon, 07/12/2010 - 16:06

With the 1.7.1 release Nexus Professional now supports multi-level staging and build promotion.   With our existing staging plugin, you can release build artifacts to a temporary staging repository to allow for testing and certification before making a final decision to release artifacts to a hosted repository.   With multi-level staging, you can add additional steps to your release process.   If you need multiple levels of testing or validation, you can now define both staging profiles and “build promotion” profiles.

When you stage an artifact in Nexus Professional, Nexus creates a temporary staging repository and exposes staged artifacts in a repository group.   When you promote a staging repository with a build promotion profile, you can configure Nexus to add promoted artifacts to additional repository groups.

To explore this new feature of Nexus Professional, consider the following workflow illustrated in the previous figure :

  • Stage: A developer publishes artifacts to a QA staging profile which exposes the staged artifacts in a QA repository group.
  • Promote to Beta: Once the QA team has completed testing, they promote the temporary staging repository to build promotion profile exposing the staged artifacts to a limited set of customers who have agreed to act as a beta testers.
  • Release: Once this closed beta testing period is finished, the staged repository is then released.  The artifacts it contains are published to a hosted release repository and exposed via the public repository group.
To support this multi-level staging feature, configure a Build Promotion profiles to expose promoted release artifacts to additional repository groups.  Build promotion profiles are configured alongside Staging profiles in the Staging Profiles panel.When you create a Build Promotion profile, you configure it to expose promoted artifacts via selected repository groups.When you need to promote a Staging Repository to a Build Promotion Profile, you select the Staging Repositories to promote and click on the Promote button.After clicking Promote, you can then select a Build Promotion profile. For more information about Nexus Professional’s support see “Multi-level Staging and Build Promotion”, and “Configuring Build Promotion Profiles” in the Sonatype Nexus book.  
Categories: Companies

Droid Does Maven, Android Does

Fri, 07/09/2010 - 16:50

If you already use Maven, developing a Android application isn’t going to be a stretch. There’s a very active community of open source projects for maven-droid development, and the Android SDK artifacts are available on Central.

You’ve probably noticed increased advertising for Google’s Android platform over the past few months. The mobile wars are heating up with the release of iPhone 4 and Android-based phones seem to be gaining market share at a rapid pace. Even if you don’t already develop for a mobile platform, you, your company, the organization you are a part of has started to have discussions about developing applications for these smart phones.

If you are thinking about mobile development with Maven, Here are some pointers to some great resources to get you started:

  • Android SDK artifacts are now available in Central. This means that you can create a project and get started without having to manually install artifacts.
  • Manfred Moser has some free sample code and Maven projects
  • There is an active and rapidly developing m2eclipse Android plugin from Hugo Josefson and Ricardo Gladwell which adds Android support to m2eclipse.

If you are looking at mobile development, you’ve got two big choices: Apple’s iOS 4 or the Android platform. I’ve used both, I’m impressed with Apple’s tools: they have great APIs, XCode is a really capable tool, but learning a whole new set of tools does seem to be a high barrier for most developers. Droid does Maven, and because of that, there is a much lower barrier to experimentation.

When a technology connects with a tool like Maven, it opens up new possibilities for developers.

 
Categories: Companies

Installing m2eclipse with the Eclipse Marketplace

Tue, 07/06/2010 - 16:22
Vote for m2eclipse!
url_site = 'http://marketplace.eclipse.org/node/252'

The Eclipse 3.6 (Helios) release added a new, easier way to install the m2eclipse plugin.   If you want to start using m2eclipse, download Eclipse 3.6 (Helios), and use the Eclipse Marketplace.   To open the Eclipse Marketplace, go to the Eclipse Help menu and select Eclipse Marketplace…

The first time you open the Eclipse Marketplace, you will be asked to select a Marketplace. Select the Eclipse Marketplace and click Next.  Maven Integration for Eclipse is separated into two components: the Core of Maven Integration for Eclipse and an optional package of extra, unsupported components. To install the core component of Maven Integration for Eclipse, open the Eclipse Marketplace, select the Search tab, and search for “Maven Integration” as shown in the following figure. Click on the Install button to the right of “Maven Integration for Eclipse”.

Once you click on Install, Eclipse will download a list of available components from the remote update site and present you with a list of available features in the Maven Integration for Eclipse plugin as shown in the following figure. Select the single, required component named “Maven Integration for Eclipse (Required)”, and click on the Finish button.

Eclipse will then ask you to agree to the licenses for Maven Integration for Eclipse in the Review Licenses step shown in the following figure. Maven Integration for Eclipse is distributed under the Eclipse Public License version 1.0. If you agree with the conditions of this license, select “I accept the terms of the license agreement” and click on the Finish button.

During the installation process, Eclipse may warn you that the software you are installing contains “unsigned content”. If you see the dialog shown in the following figure, click on OK to continue the installation process.

Once m2eclipse has been installed, Eclipse will prompt you to either restart or apply changes to a running Eclipse. At this stage of the installation, you should click on Restart Now to restart your Eclipse instance. After a successful restart, Maven Integration for Eclipse will be installed.

 
Categories: Companies

First day impressions of Maven 201

Wed, 06/30/2010 - 13:30

A long time advocate of the open source community, and contributor to the Sonatype’s Maven books, Manfred Moser, recently enrolled in our Maven training courses, and has decided to document and share his experiences. First on tap is Maven 201 with Matthew McCullough.

The training started well, when Matt mentioned that he thinks deleting a line of code improves the code you are working on. I totally agree and always found refactoring sessions that remove reams of code especially satisfying.

Manfred then goes on to list his impressions of Maven 201, including the points that really stuck out for him.

It is amazing how much you can theoretically configure the build with profiles and then lock things down with plugin/dependency management and the enforcer plugin – for heavy regulated environments or tight requirements this is ideal.

To follow Manfred’s experiences throughout his Maven training courses, go to his blog.

 
Categories: Companies

Jason van Zyl talks to How Software is Built

Mon, 06/28/2010 - 13:00

Sonatype founder and CTO Jason van Zyl recently talked with Scott Swigart from How Software is Built. How Software is Built is a blog forum that aims to provide deep analysis and community conversations about software development models.  Scott and Jason talked about the Apache Maven project.

Here is a small excerpt from the interview, and to read the full interview click here.

Scott: The first time I bumped into design patterns, which seem to be at the core of what you were talking about, I was at a software conference down in San Francisco, and one of the gang of four was giving a presentation on design patterns.

He was talking about how they were sitting around lamenting the notion that Smalltalk developers seem to solve the same problem the same way, because there were design patterns baked into the language, whereas C++ developers might solve the same problems in a whole bunch of different (and often horrific) ways, because they could go off in any direction they want.

As a result, there was a big push about factoring problems in terms of the patterns that you were looking at. It sounds like that’s really entrenched in Maven: that when you’re building software, there are certain patterns that repeatedly arise, and if they’re codified in the build system, then the same things are done the same way, even across a wide group of people who never talk to each other.

Jason: Maven is opinionated, and I designed to be this way. I don’t think it’s possible to have a tool work for such a large number of people unless you restrict some of the options and provide some guidelines.

Some people at first railed against Maven conventions and the fact that you have to do things a certain way, but if you follow those patterns, you generally can get a software project up and running in a day.

That’s evidenced by the traffic from Maven central, which has become the de facto standard central repository for Maven artifacts in the open source community. We get on the order of 250 or 300 million hits a month against it. In 2008, we had about 1.9 million unique visitors to Maven central. In 2009, we had almost four million.

So, even though Maven’s opinionated, it seems to work for a lot of people. Even though you’re restricted in some of the things you do, it provides more value by limiting what you can do than it would in providing ultimate freedom to give you as much rope as you want.

Cities that are designed well usually have structural patterns in common. Look at cities that don’t have much infrastructure or don’t copy other cities. Lots of cities in North America do that, and they have horrible infrastructures. A lot of developers and organizations tend not to look at what’s happened in the past, and they often repeat mistakes over and over again.

 
Categories: Companies

Sonatype attending Red Hat’s Eclipse DemoCamp

Sat, 06/26/2010 - 16:40

The Open Source aficionados at Red Hat are hosting an Eclipse DemoCamp in Toronto, Ontario on Tuesday June 29.  Red Hat works to bridge between the communities that create open source software and the enterprise customers who use it. They make the rapid innovation of open source technology consumable in mission-critical, enterprise environments.

Sonatype is also committed to fostering growth and innovation within the open source community.  Recently Andrew Overholt from Red Hat attended the Sonatype and Eclipse Maven Meetup in Guelph, Ontario.  And this Tuesday Sonatype’s Jason van Zyl will attend the Red Hat hosted Eclipse DemoCamp.  Jason will give a presentation on m2eclipse and Tycho.

The DemoCamp takes place on Tuesday June 29 at 6:30pm.  The event takes place at 2323 Yonge Street, Suite 300 Toronto.

To register for this event as an attendee please click here.


View Larger Map

 
Categories: Companies

Last chance to register for Thursday’s MSE webinar

Wed, 06/23/2010 - 14:00

This Thursday Sonatype is holding another free webinar on Maven Studio for Eclipse.  This webinar is an introduction to Maven Studio for Eclipse’s Developer Onboarding capabilities. Developers sacrifice days to the inefficient process of configuring a new development environment every time they begin a new project or set up a new workstation. Maven Studio for Eclipse’s Developer Onboarding cuts the configuring time from multiple days to minutes.  Developer Onboarding allows an organization to standardize and capture development environment configuration in a single location, enabling developers to start coding with a single mouse click.

This webinar is free to attend, but registration is required.

 
Categories: Companies

Sonatype’s coming to a city near you

Mon, 06/21/2010 - 14:30

Thanks again to all of the attendees and participants at the Sonatype and Eclipse Maven Meetup and DemoCamp last week.  It was a great event, and the Sonatype team is looking forward to the next Maven Meeetup.  There are some exciting events coming up in the next few months that Sonatype will be attending.  Keep reading to see the tentative schedule.  Hopefully we will be at an event near you.

Upcoming events:

Eclipse DemoCamp – Toronto, Ontario – June 29, 2010

JavaZone – Oslo, Norway – September 8-9, 2010

JavaOne – San Francisco – September 19-23, 2010

OSGI  Community event – London, U.K – September 29-30, 2010

NewYork JavaSIG Meetup – New York – October 2010

Eclipse Summit Europe – Ludwigsburg, Germany – November 2010

Eclipse Day Paris – Paris – November 2010

Have your say – Take part in our poll below:

Where would you like Sonatype’s next Maven Meeup to be?Market Research  
Categories: Companies

JAXenter interview with Matthew McCullough

Thu, 06/17/2010 - 14:00

Matthew McCullough, a member of the Sonatype training team and lead presenter with Ambient Ideas, was recently at JAX 2010 in Mainz.

Matthew is an international Java conference speaker, and is an active Maven community member, and an active contributor to many open source, and several Maven-specific projects, such as the Maven 2 CLI Plugin.

He sat down for an interview with JAXenter to talk about Maven.  Click here for the full interview in German (the English version will be available soon).

And to see the full offering of Sonatype training courses, click here.

 
Categories: Companies

What’s New in Nexus Open Source 1.7.0?

Wed, 06/16/2010 - 14:39

Sonatype is happy to announce the availability of Nexus 1.7. We’ve cut a new release for both Nexus Open Source and Nexus Professional. This post walks through the changes introduced to Nexus Open Source. 

New Features in Nexus Open Source

With this release, Nexus Open Source gains the following features:

  • Improved, Drill Down Artifact Search Interface
  • Repository Groups can contain both Repositories and other Repository Groups
Improved, Drill Down Artifact Search Inteface

When you search for artifacts in Nexus 1.7 you will be presented with a drill down search interface. We made this change to make it easier to search for artifacts, which might return hundreds of results. Using the drill down search inteface, you can quickly navigate to just the artifacts you are interested in.

NOTE:

We have changed the local format of the lucene indexes, it is required that users reindex all repositories in their Nexus server to start benefitting from the changes (and for search to work properly).

Groups of Groups

Repository Groups can now contain other Repository Groups. This change has already come in handy for developers who want to create variations of the standard public repository group. If you have a series of repository groups which are all similar, you can capture these similarities in another group.

Sonatype is continually making efforts to improve Nexus and make investments in the open source community.  Stay tuned for new features in Nexus Professional.

 
Categories: Companies

Maven Studio for Eclipse webinar recap

Tue, 06/15/2010 - 14:00

If you happened to miss Sonatype’s recent webinar on the Developer Onboarding feature of Maven Studio for Eclipse, you can view the presentation by following this link.  The Developer Onboarding feature of MSE saves companies time and money by getting a new developer productive within minutes.

Among the benefits of efficient onboarding are that:

  • New developers can be productive on Day One
  • Developers gain a new level of mobility within an organization that has adopted a standard development environment
  • IT Managers can move resources between projects without having to pay a penalty for environment setup

Sonatype will be holding a repeat webinar on Thursday June 24th, at 6:00am PDT. Sonatype webinars are free to attend, but registration is required.

 
Categories: Companies